我一直在阅读了很多关于在用户代理存储未保存令牌和我提到的风险一致。 但通过一些Auth0快速入门的例子去,我看到了令牌被保存在会话中使用会话cookie来跟踪他们。
其他提及保存实际令牌与参与风险较低的中HTTPOnly Cookie中。
我的问题是:
- 这是怎么算的无状态? 特别是与可扩展性和潜在使用负载平衡器。
- 是替代品,内存缓存和数据库存储? 难道从会议有什么不同?
- 在水疗的情况下,如何保持记得我的功能?
我一直在阅读了很多关于在用户代理存储未保存令牌和我提到的风险一致。 但通过一些Auth0快速入门的例子去,我看到了令牌被保存在会话中使用会话cookie来跟踪他们。
其他提及保存实际令牌与参与风险较低的中HTTPOnly Cookie中。
我的问题是:
阿西Kavindu写道, localStorage
是个好地方。 如果你想防止XSS攻击的应用程序,使用内容安全策略 ,所以浏览器仅仅执行JavaScript代码。 有关于最佳实践的最新RFC 的OAuth 2.0和基于浏览器的应用程序 ,让您可以检查一下。
如果你想保持与多个后端节点(簇)后端状态(会话),你可以使用一些共享数据存储如数据库或Hazelcast。 该体系结构是相同的方式与一个内存会话建立一个后端节点状态。
如果你对你的后端和一个Cookie的会话,你并不需要一个访问令牌了,因为侑SPA调用只是你的后端和令牌将成为同样的目的,从cookie中的会话ID。
记住我的功能可以通过一个cookie或者在您的身份验证提供者(从安全角度来看,可能是更好的选择),或者你自己的应用来实现。
架构的选择是简单和可扩展性之间的通常取舍。 如果你是刚开始开发的应用程序,而不是一定要选择什么,我会去的简单,因为即使你想以后更改它,它应该更容易重构。
只有当有一个后端应用程序维护会话是适用的。 从纯粹SPA的角度来看,在存储的令牌localstorage
是可以接受的和相对安全的。 现代的浏览器保护loaclsotrage相比其他手段的能力。
如果你有一个后端,访问令牌会话相关的不是将其存储在cookie中更好。 另外一个优势也就得到这个是获得刷新令牌的能力,这可以存储在后端。
有一个cookie意味着失去无国籍。 Cookies是有维护服务器和客户端之间的状态。 会话保持需要的服务器资源,但我不认为你需要担心太多上。 缩放必须完成针对您的具体要求。
记住我的功能再次与饼干内置的东西。 它是由授权服务器所提供的功能。 认为它作为浏览器记住你的Facebook在状态记录下来。 它使用cookies和你的应用程序不必担心这一点。!