【问题标题】:Web API Validate JWT Bearer Token from Custom Auth ProviderWeb API 验证来自自定义身份验证提供程序的 JWT 不记名令牌
【发布时间】:2019-09-26 12:38:06
【问题描述】:

我已经找了几个小时的示例或教程,并认为我应该在这一点上发布一些东西。

我正在尝试验证来自我的 .Net 4.7.2 Web Api 2 项目中的自定义身份验证提供程序的不记名令牌。我有一个 SPA 应用程序,它从这个身份验证提供程序获取承载令牌,并将承载令牌发送到我的 WebApi 端点。我需要转身并验证每个请求中的令牌。我认为有一种方法可以指向 Microsoft.Owin.Security.Jwt 命名空间中的类,以根据众所周知的身份验证提供程序 discovery information url 验证令牌。

以前有没有人这样做过或向我指出一个好的库/文档/教程?

我知道我可以编写自己的身份验证请求过滤器,然后从身份验证服务器中提取公共证书并解析令牌并验证签名,但我自己编写与使用相比似乎是一个可怕的想法适当的库。

【问题讨论】:

    标签: c# .net asp.net-web-api oauth jwt


    【解决方案1】:

    好吧,原来我找到了一个很好的例子here

    以下代码设置我们的 webapi 以使用我们的自定义身份验证提供程序验证令牌,同时通过 OIDC 发现 url 发现公钥。

       var issuer = "https://my-auth-provider-here/";
    
        IConfigurationManager<OpenIdConnectConfiguration> configurationManager = 
            new ConfigurationManager<OpenIdConnectConfiguration>($"{issuer}.well-known/openid-configuration", new OpenIdConnectConfigurationRetriever());
    
        OpenIdConnectConfiguration openIdConfig = configurationManager.GetConfigurationAsync(CancellationToken.None).Result;
    
        appBuilder.UseJwtBearerAuthentication(new JwtBearerAuthenticationOptions()
        {
            AuthenticationMode = AuthenticationMode.Active,
            TokenValidationParameters = new TokenValidationParameters()
            {
                AuthenticationType = "Bearer",
                ValidIssuer = issuer,
                ValidateAudience = false,
                IssuerSigningKeys = openIdConfig.SigningKeys
            }
        });
    

    【讨论】:

      猜你喜欢
      • 2020-04-04
      • 1970-01-01
      • 2017-10-26
      • 2014-07-06
      • 2012-04-05
      • 1970-01-01
      • 2015-10-19
      • 2012-11-09
      • 1970-01-01
      相关资源
      最近更新 更多