认证令牌,本地存储和Meteor。

6
我们正在运行一个Web应用程序(使用R进行编码的shiny-server),并希望为其添加身份验证层。与在R中构建此功能不同,我考虑使用Meteor创建auth tokens等内容。我考虑采用以下方式实现:
  • 用户使用Meteor登录,Meteor创建一个数据库条目,类似于以下内容:
    { "createdAt" : 1372521823708,
      "_id" : "HSdbPBuYy5wW6FBPL",
      "services" : { "password" : { "srp" : { "identity" : "vKpxEzXboBaQsWYyJ",
            "salt" : "KRt5HrziG6RDnWN8o",
            "verifier" : "8d4b6a5edd21ce710bd08c6affb6fec29a664fbf1f42823d5cb8cbd272cb9b2b3d5faa681948bc955353890f645b940ecdcc9376e88bc3dae77042d14901b5d22abd00d37a2022c32d925bbf839f65e4eb3a006354b918d5c8eadd2216cc2dbe0ce12e0ad90a383636a1327a91db72cf96cd4e672f68544eaea9591f6ed102e1" } },
        "resume" : { "loginTokens" : [ 
            { "token" : "t9Dxkp4ANsYKuAQav",
              "when" : 1372521823708 } ] } },
      "emails" : [ 
        { "address" : "example@example.com",
          "verified" : false } ] }
  • 用户被重定向到“旧应用程序”。在此处,我们检查本地存储(如果我们使用相同的外部面向主机和端口,则应该是与Meteor相同的本地存储,对吗?),并找到以下信息:
    Meteor.loginToken:t9Dxkp4ANsYKuAQav
    Meteor.userId:HSdbPBuYy5wW6FBPL
  • “其他应用程序”将调查本地存储数据,并针对Meteor数据库执行简单的数据库查询以验证本地存储信息是否与数据库中的信息匹配。还可以检查某种过期日期。如果匹配,则应用程序呈现,否则不会。

这是一个足够安全的方法吗?共享应用程序之间的本地存储数据是否可行?


2
这似乎是一个合理的方法,但你需要注意你的 cookie 上的域和路径限制:http://en.wikipedia.org/wiki/HTTP_cookie#Domain_and_Path。 - Jeff Allen
这正是我在使用Meteor和浏览器扩展时的处理方式。 - PETER BROWN
这个问题可能与我的shinyStore包有关,它允许您从Shiny使用(可选加密的)本地存储:https://github.com/trestletech/shinyStore - Jeff Allen
1个回答

0

当然,您必须确保您的WebSockets在TLS上运行。LocalStorage使用简单的同源策略。所以它可以工作。LocalStorage与cookie一样安全,所以没问题。

简而言之:

是的和是的


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接