最佳答案
我很难为微服务体系结构选择一个像样的/安全的身份验证策略。我找到的关于这个主题的唯一一篇 SO 文章是这样的: 微服务体系结构中的单点登录
我的想法是在每个服务(例如认证、消息传递、通知、配置文件等)中有一个对每个用户的唯一引用(相当合乎逻辑的是他的 user_id
) ,以及登录后获得当前用户的 id
的可能性。
从我的研究中,我发现有两种可能的策略:
在这个策略中,身份验证应用程序是其中一个服务。但是每个服务必须能够使转换 session_id
= > user_id
,所以它必须非常简单。这就是为什么我想到了 Redis,它将存储键: 值 session_id:user_id
。
在这种策略中,会话存储实际上并不重要,因为它只由身份验证应用程序处理。然后,user_id
可以转发到其他服务。我想到了 Rails + Devise (+ Redis 或者 mem-cached,或者 cookie 存储,等等) ,但是有很多可能性。唯一重要的是服务 X 永远不需要对用户进行身份验证。
这两种解决办法在以下方面如何比较:
或者你可以提出另一个我没有提到的解决方案?
我更喜欢解决方案 # 1,但是还没有找到多少默认的实现来保证我正朝着正确的方向前进。