gpt4 book ai didi

c# - Azure AD Jwt 持有者 token

转载 作者:行者123 更新时间:2023-11-30 18:16:37 25 4
gpt4 key购买 nike

我正在尝试使用 SPA UI 和 Web API 构建一个应用程序,该应用程序使用 Jwt Bearer token 进行访问控制。我可以对用户进行身份验证并将不记名 token 发送到网络请求,但是当我这样做时出现以下错误

Bearer was not authenticated. Failure message: IDX10500: Signature validation failed. No security keys were provided to validate the signature.

我想让中间件使用在 中找到的 key 集

https://login.microsoftonline.com/common/discovery/keys

但我显然遗漏了一些东西。下面是我启动时配置不记名 token 的代码片段。有人可以指出我哪里出错了吗?

    var clientId = Configuration["AzureAd:ClientId"];
var tenantId = Configuration["AzureAd:TenantId"];
var issuer = $"https://sts.windows.net/{tenantId}/";

services.AddAuthentication(options =>
{
options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
})
.AddJwtBearer(options =>
{
options.RequireHttpsMetadata = false;
options.SaveToken = true;
options.Authority = "https://login.microsoftonline.com/common/";

options.TokenValidationParameters = new TokenValidationParameters()
{
ValidateIssuer = true,
ValidIssuer = issuer,
ValidateAudience = true,
ValidAudiences = new string[] { clientId },
ValidateLifetime = true
};
});

最佳答案

好吧,我只是在我的代码中修复了这个问题,尽管我仍在学习所有这些新东西是如何工作的。对我来说,即使 ValidateIssuerSigningKey 设置为 false,我也必须设置 IssuerSigningKey。我不知道是否需要任何特定值,但我将我的设置为我在签署 JWT token 时使用的相同值。

options.TokenValidationParameters = new TokenValidationParameters
{
ValidateAudience = false,
ValidateLifetime = false,
ValidateIssuer = false,
ValidateIssuerSigningKey = false,
IssuerSigningKey = new SymmetricSecurityKey(Encoding.ASCII.GetBytes("this is super secret")),
ValidateActor = false
};

关于c# - Azure AD Jwt 持有者 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46081209/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com