Azure AD OAuth 2验证令牌.NET Core

时间:2018-10-18 11:32:32

标签: .net-core jwt azure-active-directory token

我现在正在开发一个Microservices .NET Core项目。我们有一个Azure AD,我们想验证所有Web Apis微服务发出的请求。

有许多应用程序将调用我们的Web API项目。这些应用程序中的每一个都有自己的应用程序(ClientId和客户端密码)。他们使用自己的数据生成令牌,然后在每次请求时将其发送到标头中。 (到目前为止没有问题)

在我这一边,我必须对每个请求都验证令牌,但是验证应适用于来自不同应用程序的所有令牌。

因此,我试图将JWTBarear设置为接受任何令牌,但是我对配置有些迷惑:

services.AddAuthentication(o =>
   {
      o.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
      o.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
   })
   .AddJwtBearer(jwt =>
   {
      jwt.Authority = "https://login.microsoftonline.com/[myTenant]";
   });

services.AddAuthorization(auth =>
   {
      auth.AddPolicy("Bearer", new AuthorizationPolicyBuilder(JwtBearerDefaults.AuthenticationScheme)
                        .RequireAuthenticatedUser()
                        .Build());
   });

和“配置”中的

app.UseAuthentication();   
app.UseMvc();

但是,我总是和401。我使用邮递员生成了令牌,该令牌有效。

我对配置不是很好。我想念什么吗? 我在互联网上看到的所有示例都使用ClientId,我有很多,而不仅仅是一个。

P.S。我不必登录或进行其他操作,只需要验证令牌即可。

谢谢!

1 个答案:

答案 0 :(得分:-1)

哦,我找到了答案。我错过了观众,在.NET Core中与众不同:

.AddJwtBearer(jwtOptions =>
       {
           jwtOptions.Audience = "https://management.core.windows.net";
           jwtOptions.Authority = "https://login.microsoftonline.com/[myTenant]";
       });