【问题标题】:Authentication in microservices (different options, pros and cons)微服务中的身份验证(不同的选项,优点和缺点)
【发布时间】:2020-05-14 00:46:05
【问题描述】:

我想了解微服务环境中单点登录身份验证和授权的不同实现方式的利弊。我想出了 3 个解决方案(见下图)。 每个选项有什么优缺点? (我使用 Ocelot 作为网关,使用 IdentityServer4 作为身份提供者)。微服务 A 和微服务 B 有自己的 UI(SPA 应用程序),微服务 D 是 REST API。

【问题讨论】:

    标签: authentication microservices


    【解决方案1】:

    我将尝试解释我的观点:

    选项 1

    我了解,首先您必须使用用户凭据登录身份服务器,然后创建 cookie。我不推荐这个选项,首先因为我可以看到您没有验证 cookie,它包含传播到服务器的 userId,因此用户可以更改 userId 以获取有关其他用户的信息。其次,因为这种方法让你有一个 cookie 策略

    选项 3

    如我所见,在此选项中,您正在对每个应用程序进行登录。因此,如果将来您有其他应用程序,您将必须在每个应用程序中实现登录页面和逻辑。

    选项 2

    我认为这是其中最好的,但我会做出改变。首先,使用 api 网关来处理交叉问题是一个不错的选择,例如身份验证/授权与身份服务器对话以请求访问令牌并尝试调用服务。这样做您将拥有一个唯一的登录点,并且网关可以检查权限(范围)以执行用户所需的操作,因此服务不必处理这个问题。我唯一要改变的是每个服务中的验证。由于 JWT 令牌的性质,它将包含验证自身所需的所有信息(到期时间、颁发者、受众......等),因此无需进行此验证。并且为了避免操纵的可能性,最好的方法是通过可信证书对令牌进行签名并让网关检查完整性,因此当令牌到达服务时,您可以确信这是一个具有适当权限的有效用户来执行行动

    【讨论】:

      猜你喜欢
      • 2018-07-17
      • 1970-01-01
      • 2010-11-22
      • 1970-01-01
      • 2021-08-13
      • 2020-09-25
      • 1970-01-01
      • 2016-04-26
      • 2019-09-19
      相关资源
      最近更新 更多