我很难为微服务架构选择一种体面/安全的身份验证策略。我在该主题上找到的唯一SO帖子是:Microservice Architecture中的单点登录
我的想法是在每个服务(例如身份验证,消息传递,通知,配置文件等)中具有对每个用户的唯一引用(从逻辑上说,然后是其用户user_id
),并具有id
在登录时获得当前用户的可能性。
从我的研究中,我发现有两种可能的策略:
1.共享架构
在这种策略中,身份验证应用是其中一项服务。但是每个服务都必须能够进行转换session_id
=>,user_id
因此必须非常简单。这就是为什么我想到Redis时会存储key:value的原因session_id:user_id
。
2.防火墙架构
在此策略中,会话存储并不重要,因为它仅由身份验证应用处理。然后,user_id
可以将其转发到其他服务。我想到了Rails + Devise(+ Redis或mem-cached,或cookie存储等),但是有很多可能性。唯一重要的是,Service X永远不需要对用户进行身份验证。
这两种解决方案在以下方面的比较:
- 安全
- 健壮性
- 可扩展性
- 使用方便
也许您会建议我在这里没有提到的另一种解决方案?
我更喜欢#1解决方案,但还没有发现很多默认的实现方式可以确保我朝正确的方向前进,因此可以确保我的安全。
我希望我的问题不会被解决。我真的不知道还有什么要问的。
提前致谢