如何针对多个Azure Active Directories(ClientIds)验证JWT令牌?

时间:2017-09-24 12:19:21

标签: jwt azure-active-directory asp.net-core-2.0

我有一个Asp.Net Core 2.0 WebApi,它要求对所有请求进行身份验证,并使用JWT令牌验证,如下所示:

services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) .AddJwtBearer(options => { options.Authority = this._configuration.GetValue<string>("Authority"); options.Audience = this._configuration.GetValue("ClientId"); }); ... app.UseAuthentication();

我还有两个客户端应用程序:Angular4 Web应用程序和Web Api。

所有三个应用程序都有自己的AAD App Registration =每个都有不同的ClientID,但都在同一个租户(权限)上。

是否可以设置Web Api应用程序,它可以针对多个AAD验证令牌(令牌可以由三个不同的AAD =三个不同的ClientID生成)?

我知道我可以使用'client_credentials'流程在客户端上生成令牌并使用该令牌进行Api调用,但我必须处理令牌刷新等等。所以,我只是想知道,如果有更简单的方法。

感谢。

1 个答案:

答案 0 :(得分:0)

您无需关注不同的客户ID。无论在哪个客户端,当获取访问令牌来调用由AAD保护的Web api时,访问令牌中的audience声明应该相同:您为API应用注册的App ID URI。 API方面应验证访问令牌中的受众声明是否与web api的App ID URI相匹配,它不关心哪个客户端发送访问请求。