【问题标题】:Authenticating using Auth2 when there are several resources有多个资源时使用 Oauth2 进行身份验证
【发布时间】:2020-03-26 04:07:40
【问题描述】:

我需要实现一个用户的单点登录,它可以从几个不同的服务中获取服务。

当只有一个服务时,用户可以从客户端登录,将请求发送到后端,将 URL 返回到 JWT 令牌颁发服务器,他可以从中获取他发回的令牌到 BE,他现在已通过身份验证。

现在的变化是,他需要获得更多服务。每个服务都有自己的前端和后端,但每个人都使用相同的发行者。意思是有 FE 和 BE 的服务,还有另外一个通用的 BE 来做鉴权。

在场景中进行身份验证的正确流程是什么?通用 BE 能否为每个所需服务的客户端颁发令牌?或者 BE 应该使用服务的 BE url 响应客户端,并让客户端自己从每个服务发送身份验证令牌响应?还是别的什么?

【问题讨论】:

    标签: oauth oauth-2.0 jwt


    【解决方案1】:

    我假设您的意思是 OpenID Connect,因为 OAuth2.0 不用于身份验证,也不需要使用 JWT。此外,在您的场景中,没有多个资源,而是多个客户端/依赖方。

    使用 OpendID Connect Implicit 流程,颁发者最终将向用户的浏览器发送一个 id 令牌 (JWT)。此 JWT 可用于对服务进行身份验证。每个 JWT 都将包含一个 aud(受众)声明,以标识它应该用于的服务。

    使用授权码流程,颁发者最终会向用户的浏览器发送一个授权码。用户将代码发送到服务,服务会将代码及其客户端 ID 发送给颁发者,以换取 ID 令牌 (JWT) 和访问令牌。

    在这两种情况下,服务都会使用iss(颁发者)声明来识别最终用户,并通过检查签名、到期时间和受众来验证 JWT。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-29
    • 2013-06-24
    • 2019-11-26
    • 1970-01-01
    相关资源
    最近更新 更多