我正在构建一个RESTful web api。用户通过身份验证和授权后,将获得一个访问令牌,其中包含:
我的问题是,如果使用对称算法加密这些令牌并将其传递给客户端更好,或者只是传递指向我session table
中用户会话的唯一哈希值。所以基本上:
存储在客户端的令牌 - 当服务器收到令牌时,它正被解密,所有数据都在内存中。
有关会话的数据存储在数据库中,客户端收到散列 - 当服务器收到散列时,会在数据库中查找会话数据并从中获取。
哪种解决方案更适合大型服务,处理数百万用户?
答案 0 :(得分:1)
从可伸缩性的角度来看,最好是生成包含信息的令牌,在服务器上签名,然后将其传递回客户端以存储并返回每个请求。通过在服务器上对其进行签名,您可以免受用户篡改数据的影响。唯一的要求是您所在地区的所有服务器都有相同的密钥来签名并检查令牌上的签名。
这样做有一个标准,称为JSON Web Tokens,它在几乎所有框架中都有实现,包括support in .NET from Microsoft。
答案 1 :(得分:0)
就个人而言,我会发回令牌。但我不会依赖令牌来提供信息;而是我将它用作哈希来再次获取特定用户的信息。
缓存应该能够解决任何性能问题。
我这样做的原因与你的两个选择相反: