EdH*_*EdH 5 azure azure-active-directory
我正在更新我的应用程序以使用 Azure Active Directory 作为 OAuth 2.0 身份验证服务器。目前,我成功使用授权代码授予类型并接收 access_token 和 id_token 值。
现在,我正在尝试验证返回的 id_token。我按照doco中概述的步骤操作,并且能够找到用于签署 JWT 的公钥。例如,这是 Azure REST 端点返回的记录
据我了解,这些是可用的公钥。我可以将其过滤为 1(使用返回的 JWT 标头中的 kids 值)。但我很难理解的是每个领域都代表什么。
我是否使用 n/e 字段来创建 SHA256 公钥的模数和指数值?我应该使用 x5c 值吗?抱歉,如果这是一个明显的问题,但是有没有关于给定上述值的文档,如何为其创建公钥?我是用 Java 做的,所以任何具体的内容将不胜感激。
为了验证 id_token 的签名,JwtSecurityTokenHandler如果您使用 C# 开发,我们可以使用类。您可以参考JsonWebTokenValidator.cs的代码示例来使用此类。为了方便起见,我也将此类复制到此处:
public class JsonWebTokenValidator
{
public JwtSecurityToken Validate(string token)
{
string stsDiscoveryEndpoint = "https://login.microsoftonline.com/common/v2.0/.well-known/openid-configuration";
ConfigurationManager<OpenIdConnectConfiguration> configManager = new ConfigurationManager<OpenIdConnectConfiguration>(stsDiscoveryEndpoint);
OpenIdConnectConfiguration config = configManager.GetConfigurationAsync().Result;
TokenValidationParameters validationParameters = new TokenValidationParameters
{
ValidateAudience = false,
ValidateIssuer = false,
IssuerSigningTokens = config.SigningTokens,
ValidateLifetime = false
};
JwtSecurityTokenHandler tokendHandler = new JwtSecurityTokenHandler();
SecurityToken jwt;
var result = tokendHandler.ValidateToken(token, validationParameters, out jwt);
return jwt as JwtSecurityToken;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3154 次 |
| 最近记录: |