【问题标题】:C# unable to validate azure AD tokenC# 无法验证 azure AD 令牌
【发布时间】:2022-11-01 14:57:57
【问题描述】:

我有一个独立的 blazor WASM 应用程序,它需要向外部应用程序发送请求。我需要验证我从 API 中的 WASM 应用收到的身份验证。

我可以看到正在发送的 Bearer 令牌,我在 jwt.io 中对其进行了检查,数据似乎很有意义。

客户端配置如下所示:

"AzureAd": {
   "Authority": "https://login.microsoftonline.com/common",
   "ClientId": "****",
   "ValidateAuthority": true
}

我尝试了以下 TokenValidationParameters 但没有成功:

var stsDiscoveryEndpoint = String.Format(CultureInfo.InvariantCulture, $"https://login.microsoftonline.com/common/v2.0/.well-known/openid-configuration");
var configManager = new ConfigurationManager<OpenIdConnectConfiguration>(stsDiscoveryEndpoint, new OpenIdConnectConfigurationRetriever());
var config = await configManager.GetConfigurationAsync();

var validationParameters = new TokenValidationParameters
{
    ValidateAudience = false,
    ValidateIssuer = true,
    IssuerSigningKeys = config.SigningKeys,
    ValidIssuer = config.Issuer,
    ValidateLifetime = false
};

我已经放松了“验证”,希望找出问题所在,但我不断收到“签名验证失败”

知道如何验证令牌吗?

【问题讨论】:

    标签: c# asp.net-core jwt blazor-webassembly webassembly


    【解决方案1】:

    有两种方法可以验证令牌。首先是编写一个自定义过滤器来拦截所有传入的请求,并且您知道请求标头中有一个不记名令牌,然后您可以使用 jwt 解码库来解码令牌并验证声明。

    但我仍然建议关注official sample 直接通过 Azure AD 保护您的 api。这是tutorial。你需要在 Azure AD 中公开一个 API,然后配置你的应用程序。

    顺便说一句,您已经获得了访问令牌,我认为您应该在 AAD 中拥有公开的 api,因此您只需要在您的 api 项目中添加身份验证即可。然后在asp.net core web API项目中,需要修改Program.cs

    var builder = WebApplication.CreateBuilder(args);
    
    builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
        .AddMicrosoftIdentityWebApi(builder.Configuration.GetSection("AzureAd"));
    

    和 appsetting.json

    "AzureAd": {
        "Instance": "https://login.microsoftonline.com/",
        "ClientId": "37xxxxxxxb2d7",
        "TenantId": "21xxxxxxd93",
        "Audience": "api://37xxxxxb2d7"
      },
    

    然后在控制器中,添加[Authorize] 属性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-10-17
      • 2016-12-02
      • 1970-01-01
      • 2023-01-12
      • 2017-02-13
      • 2019-03-23
      • 2021-08-10
      相关资源
      最近更新 更多