Azure 公钥解释了吗?

标签 azure azure-active-directory

我正在更新我的应用程序以使用 Azure Active Directory 作为 OAuth 2.0 身份验证服务器。目前,我已成功使用授权代码授予类型并接收 access_token 和 id_token 值。

现在,我正在尝试验证返回的 id_token。我正在按照doco中概述的步骤进行操作,并且我能够找到用于签署 JWT 的公钥。例如,这是 Azure REST 端点返回的记录

Returned Public Keys

据我了解,这些是可用的公钥。我可以将其过滤为 1(使用返回的 JWT header 中的 kids 值)。但我很难理解的是每个字段都代表什么。

我是否使用 n/e 字段来创建 SHA256 公钥的模数和指数值?我应该使用 x5c 值吗?抱歉,如果这是一个明显的问题,但是有没有关于给定上述值的文档,如何为其创建公钥?我是用 Java 做的,所以任何具体的内容都将不胜感激。

最佳答案

要验证 id_token 的签名,如果您使用 C# 进行开发,我们可以使用 JwtSecurityTokenHandler 类。您可以引用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;
    }
}

关于Azure 公钥解释了吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40778964/

相关文章:

azure - Azure 云 shell 中缺少 New-AzureADPolicy

azure - 如果 count 参数设置为 0,则条件资源将被销毁

azure - 使用 JavaScript API 在 Dynamic 365 中进行登录身份验证

ruby-on-rails - Ruby on Rails 可以部署在 Azure 网站上吗?

r - 从 R 连接到共享点站点

Azure AD B2C ChangePassword 自定义策略 "Invalid username or password."

azure - 在Azure Web App上运行PowerShell脚本,可能吗?

node.js - Azure 的 4 分钟 HTTP 请求超时是否适用于多部分格式数据文件上传?

c# - Azure 混合连接中的 SYSTEM_USER

asp.net-mvc - 对 Office 365 API 进行身份验证并从 ASP.NET MVC 应用程序发送电子邮件