繁体   English   中英

如何验证 Azure AD v2 在 ASP.NET 核心 WEB ZDB97Z42387108CA81463 中生成的 OpenID Connect 访问令牌

[英]How to Validate OpenID Connect Access Token generated by Azure AD v2 in ASP.NET core WEB API?

如何验证 ASP.NET 核心 WEB API 中的 Azure AD (v2?!!) 生成的 OpenID Connect 访问令牌?

情景是:

我有一个 Angular 8 客户端应用程序,它在登录后获取 OpenID Connect 访问令牌。 客户端可以连同访问令牌一起调用 API。 但问题是,我应该如何验证 ASP.NET 核心 API 中的令牌?

使用此代码,我得到一个没有任何描述的授权错误。

  services.AddAuthentication(AzureADDefaults.BearerAuthenticationScheme)
             .AddAzureADBearer(options => Configuration.Bind("AzureAd", options));

        services.AddCors(options =>
        {
            options.AddDefaultPolicy(
                builder =>
                {
                    builder.AllowAnyOrigin();
                    builder.AllowAnyMethod();
                    builder.AllowAnyOrigin();
                    builder.AllowAnyHeader();
                });
        });

Microsoft.AspNetCore.Authorization.DefaultAuthorizationService:信息:授权失败。 Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker:信息:过滤器“Microsoft.AspNetCore.Mvc.Authorization.AuthorizeFilter”处的请求授权失败。 Microsoft.AspNetCore.Mvc.ChallengeResult:信息:使用身份验证方案执行 ChallengeResult ()。 Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerHandler:信息:AuthenticationScheme:AzureADJwtBearer 受到挑战。

"AzureAd": {
"Instance": "https://login.microsoftonline.com/",
"Domain": "localhost",
"TenantId": "myTenantId",
"ClientId": "myClientId"

},

Domain不是localhost 仅当您想要接受来自单个租户的访问令牌时才需要指定 TenantId。 否则,您可以将它们设置为common

This value can be:
- A GUID (Tenant ID = Directory ID)
- 'common' (any organization and personal accounts)
- 'organizations' (any organization)
- 'consumers' (Microsoft personal accounts)

您应该通过将此代码添加到Startup.cs文件来更改为使用 Microsoft 标识平台端点(Azure AD V2.0 端点):

services.Configure<JwtBearerOptions>(AzureADDefaults.JwtBearerAuthenticationScheme, options =>
{
    // This is a Microsoft identity platform web API.
    options.Authority += "/v2.0";

    .....
});

您可以单击此处查看详细说明和代码示例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM