有多个资源时使用Auth2进行身份验证

时间:2019-12-01 08:18:52

标签: oauth oauth-2.0 jwt

我需要实现一个用户的单一登录,这样才能从多个不同的服务中获取服务。

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

现在正在发生的变化是,他需要获得更多的服务。每个服务都有自己的前端和后端,但是每个人都使用同一发行者。这意味着同时具有FE和BE的服务,并且还有另一个用于身份验证的常规BE。

在方案中进行身份验证的正确流程是什么?普通BE是否可以为客户提供每项所需服务的令牌?还是BE应该使用服务的BE URL响应客户端,并让客户端本身从每个服务发送身份验证令牌响应?还是其他?

1 个答案:

答案 0 :(得分:0)

我假设您的意思是OpenID Connect,因为OAuth2.0不用于身份验证,并且不需要使用JWT。另外,在您的方案中,没有多个资源,但是有多个客户/依赖方。

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

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

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