首页 文章

微服务认证策略

提问于
浏览
96

我很难为微服务架构选择合适/安全的身份验证策略 . 我在这个主题上发现的唯一SO帖子就是这个:Single Sign-On in Microservice Architecture

我的想法是在每个服务(例如,身份验证,消息传递,通知,配置文件等)中为每个用户提供一个唯一的引用(在逻辑上与他的 user_id 相当),并且如果登录则可以获得当前用户的 id .

从我的研究中,我看到有两种可能的策略:

1.共享架构

Shared architecture

在此策略中,身份验证应用程序是其中一项服务 . 但是每个服务必须能够进行转换 session_id => user_id 所以它必须简单易行 . 这就是为什么我想到Redis,它会存储密钥:value session_id:user_id .

2.防火墙架构

Firewall architecture

在此策略中,会话存储并不重要,因为它仅由身份验证应用程序处理 . 然后 user_id 可以转发到其他服务 . 我想到了Rails Devise(Redis或mem-cached,或cookie存储等),但有很多可能性 . 唯一重要的是Service X永远不需要对用户进行身份验证 .


这两种解决方案在以下方面的比较如何:

  • 安全

  • 健壮

  • 可扩展性

  • 易用性

或者你可能会建议我在这里没有提到的另一种解决方案?

我更喜欢解决方案#1,但没有找到太多的默认实现,这可以保证我正朝着正确的方向前进 .

我希望我的问题不会被关闭 . 我真的不知道还能在哪里问它 .

提前致谢

4 回答

  • 0

    根据我的理解,解决它的一个好方法是使用OAuth 2协议(你可以在http://oauth.net/2/上找到更多关于它的信息)

    当您的用户登录您的应用程序时,他们将获得一个令牌,使用此令牌,他们将能够发送到其他服务以在请求中识别它们 .

    OAuth 2 Model

    链式微服务设计示例
    Architecture Model

    资源:

  • 51

    您可以使用idenitty server 4进行身份验证和授权

    你必须使用 Firewall Architecture 因此你可以更好地控制 secutiry , robustness ,scalability and ease of use

  • 0

    应使用API网关模式来使用OpenID Connect实现此功能 . 用户将通过IDP进行身份验证,并从授权服务器获取JWT令牌 . 现在,API网关系统可以将此令牌存储在Redis数据库中,并在浏览器上设置cookie . API网关将使用cookie来验证用户请求,并将令牌发送到微服务 .

    API网关充当所有类型的客户端应用程序的单一入口点,例如公共java脚本客户端应用程序,传统Web应用程序,本机移动应用程序和微服务架构中的第三方客户端应用程序 .

    你可以在http://proficientblog.com/microservices-security/找到更多相关的细节 .

  • 0

    简答:使用Oauth2.0类型的基于令牌的身份验证,可用于任何类型的应用程序,如webapp或移动应用程序 . 然后,Web应用程序涉及的步骤顺序如下

    • 对ID提供程序进行身份验证

    • 将访问令牌保留在cookie中

    • 访问webapp中的页面

    • 调用服务

    下图描绘了所需的组件 . 这种将Web和数据apis分开的架构将提供良好的可扩展性,弹性和稳定性

    enter image description here

相关问题