微服务authentication策略
我很难为微服务体系结构select体面/安全的身份validation策略。 我在这个主题上发现的唯一的SOpost是这样的:微服务架构中的单点login
我的想法是在每个服务(例如身份validation,消息传递,通知,configuration文件等)中为每个用户提供一个唯一的引用(在逻辑上与他的user_id
相当),并且可以在login时获得当前用户的id
。
从我的研究中,我发现有两种可能的策略:
1.共享架构
在这个策略中,authentication应用程序是一个服务。 但每个服务必须能够进行转换session_id
=> user_id
所以它必须是死的简单。 这就是为什么我想到Redis,它会存储关键字:value session_id:user_id
。
2.防火墙架构
在这种策略中,会话存储并不重要,因为它只能由validation应用程序处理。 然后user_id
可以转发到其他服务。 我想过Rails + Devise(+ Redis或者mem-cached,或者cookie存储等),但是有很多的可能性。 唯一重要的是Service X将永远不需要authentication用户。
这两个解决scheme如何比较:
- 安全
- 稳健性
- 可扩展性
- 使用方便
或者,也许你会build议我在这里没有提到的另一个解决scheme?
我更喜欢解决scheme#1,但是还没有find太多的默认实现来保证我的方向正确。
我希望我的问题没有结束。 我真的不知道还有什么要问的。
提前致谢
根据我的理解,解决这个问题的好方法是使用OAuth 2协议(在http://oauth.net/2/上可以find更多的信息);
当你的用户login你的应用程序时,他们将得到一个令牌,并使用这个令牌,他们将能够发送到其他服务,以在请求中识别它们。
链式微服务devise实例
资源:
您可以使用身份validation服务器4进行身份validation和授权
您必须使用防火墙架构,因此您可以更好地控制安全性,健壮性,可扩展性和易用性