gpt4 book ai didi

azure - 使用 "jwks_uri"端点中的值验证从 azure ad b2c 接收的 token

转载 作者:行者123 更新时间:2023-12-04 20:26:28 25 4
gpt4 key购买 nike

我从实用服务获取 azure 广告访问 token ,我想使用一些标准 token 验证参数(包括发行者、受众和发行者签名 key )对其进行验证。现在我有发行者和受众,但我没有发行人签名 key 。

但是,我已经使用 azure ad b2c 的 jwks_uri 端点提取了关键信息,这给了我一个 json 输出

{
"keys": [
{
"kid": "X5eXk4xyojNFum1kl2Ytv8dlNP4......",
"nbf": 1493763266,
"use": "sig",
"kty": "RSA",
"e": "AQAB",
"n": "tVKUtcx_n9rt5afY_2WFNvU6PlFMggCatsZ3l4RjKxH0jgdLq6CScb0P3ZGXYbPzXvmmL...."
}
]
}

我尝试仅使用 n 值作为键,但收到 token 验证失败的异常。现在我想知道如何获取发行者签名 key 来验证 token 。 n+e(字符串连接?)是一个解决方案吗?我看到类似的问题Azure AD B2C - Token validation does not work但它没有回答我的问题,因此想知道在 .net core 中执行此操作的确切方法。

最佳答案

根据我的理解,您想要验证访问 token 。如果是这样,我们可以使用sdk System.IdentityModel.Tokens 来实现它。例如

 var configurationManager = new ConfigurationManager<OpenIdConnectConfiguration>(
"https://testb2ctenant05.b2clogin.com/testB2CTenant05.onmicrosoft.com/v2.0/.well-known/openid-configuration?p=B2C_1_test",
new OpenIdConnectConfigurationRetriever(), new HttpDocumentRetriever());
CancellationToken ct = default(CancellationToken);
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
var discoveryDocument = await configurationManager.GetConfigurationAsync(ct);
var signingKeys = discoveryDocument.SigningKeys;
var validationParameters = new TokenValidationParameters
{
RequireExpirationTime = true,
RequireSignedTokens = true,
ValidateIssuer = true,
ValidIssuer = discoveryDocument.Issuer,
ValidateIssuerSigningKey = true,
IssuerSigningKeys = signingKeys,
ValidateLifetime = true,

};

var principal = new JwtSecurityTokenHandler()
.ValidateToken(token, validationParameters, out var rawValidatedToken);

关于azure - 使用 "jwks_uri"端点中的值验证从 azure ad b2c 接收的 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59840170/

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