令牌身份验证如何与负载平衡 Web 服务一起使用
How does token authentication work with load balanced web services
我们在某些 ArcGIS Server Web 服务上使用基于令牌的安全性,我正试图更好地了解它们的工作原理。我们目前必须使用粘性会话,因为我们有用于冗余和性能的负载平衡服务。然而,我阅读的所有文档(例如下面的文章)都建议使用令牌身份验证实际上应该消除对粘性会话的需要。读完所有内容后,我仍然不确定为什么会这样。
如果用户登录并从我们的负载平衡服务器之一接收令牌,并且令牌随每个后续请求一起传递,为什么没有必要确保请求在同一台服务器上结束。其他服务器将如何验证令牌?根据我的阅读,我能想到的唯一方法是将令牌签名存储在所有负载平衡服务器可用的中央存储库中。再一次,这与仅存储令牌本身并没有什么不同,后者与存储会话信息相同。
http://code.tutsplus.com/tutorials/token-based-authentication-with-angularjs-nodejs--cms-22543
The only way I can think of based on my readings that this could be
made to work without sticky sessions is to store the token signature
in a central repository available to all the load balanced servers.
是的,没错。链接的文章确实显示了持久令牌存储。
唯一的例外是使用了 JWT(也在链接的文章中)或不在服务器端存储令牌的类似机制。
这是因为即使用户名在可以存储在 cookie 客户端的 JWT 中,用户名也受到 MAC 的保护。此消息身份验证代码使用服务器端密码对用户名进行哈希处理。这个秘密可以在所有负载平衡服务器之间共享,重新运行MAC算法可以确保客户端存储的用户名没有被篡改。
在实践中,请记住始终存储到期日期 - 否则您的 JWT 将容易受到重放攻击(例如,有效用户保存他们的 cookie 值以备后用,但他们可能无法作为该用户访问)。
我们在某些 ArcGIS Server Web 服务上使用基于令牌的安全性,我正试图更好地了解它们的工作原理。我们目前必须使用粘性会话,因为我们有用于冗余和性能的负载平衡服务。然而,我阅读的所有文档(例如下面的文章)都建议使用令牌身份验证实际上应该消除对粘性会话的需要。读完所有内容后,我仍然不确定为什么会这样。
如果用户登录并从我们的负载平衡服务器之一接收令牌,并且令牌随每个后续请求一起传递,为什么没有必要确保请求在同一台服务器上结束。其他服务器将如何验证令牌?根据我的阅读,我能想到的唯一方法是将令牌签名存储在所有负载平衡服务器可用的中央存储库中。再一次,这与仅存储令牌本身并没有什么不同,后者与存储会话信息相同。
http://code.tutsplus.com/tutorials/token-based-authentication-with-angularjs-nodejs--cms-22543
The only way I can think of based on my readings that this could be made to work without sticky sessions is to store the token signature in a central repository available to all the load balanced servers.
是的,没错。链接的文章确实显示了持久令牌存储。
唯一的例外是使用了 JWT(也在链接的文章中)或不在服务器端存储令牌的类似机制。
这是因为即使用户名在可以存储在 cookie 客户端的 JWT 中,用户名也受到 MAC 的保护。此消息身份验证代码使用服务器端密码对用户名进行哈希处理。这个秘密可以在所有负载平衡服务器之间共享,重新运行MAC算法可以确保客户端存储的用户名没有被篡改。
在实践中,请记住始终存储到期日期 - 否则您的 JWT 将容易受到重放攻击(例如,有效用户保存他们的 cookie 值以备后用,但他们可能无法作为该用户访问)。