<small id='nQOrV'></small><noframes id='nQOrV'>

      <legend id='nQOrV'><style id='nQOrV'><dir id='nQOrV'><q id='nQOrV'></q></dir></style></legend><tfoot id='nQOrV'></tfoot>
        <i id='nQOrV'><tr id='nQOrV'><dt id='nQOrV'><q id='nQOrV'><span id='nQOrV'><b id='nQOrV'><form id='nQOrV'><ins id='nQOrV'></ins><ul id='nQOrV'></ul><sub id='nQOrV'></sub></form><legend id='nQOrV'></legend><bdo id='nQOrV'><pre id='nQOrV'><center id='nQOrV'></center></pre></bdo></b><th id='nQOrV'></th></span></q></dt></tr></i><div id='nQOrV'><tfoot id='nQOrV'></tfoot><dl id='nQOrV'><fieldset id='nQOrV'></fieldset></dl></div>
        • <bdo id='nQOrV'></bdo><ul id='nQOrV'></ul>
      1. 使用 Owin 从 JWT 获取自定义声明

        时间:2023-06-01

          <tbody id='9DDEF'></tbody>
        • <bdo id='9DDEF'></bdo><ul id='9DDEF'></ul>
          <i id='9DDEF'><tr id='9DDEF'><dt id='9DDEF'><q id='9DDEF'><span id='9DDEF'><b id='9DDEF'><form id='9DDEF'><ins id='9DDEF'></ins><ul id='9DDEF'></ul><sub id='9DDEF'></sub></form><legend id='9DDEF'></legend><bdo id='9DDEF'><pre id='9DDEF'><center id='9DDEF'></center></pre></bdo></b><th id='9DDEF'></th></span></q></dt></tr></i><div id='9DDEF'><tfoot id='9DDEF'></tfoot><dl id='9DDEF'><fieldset id='9DDEF'></fieldset></dl></div>
            <legend id='9DDEF'><style id='9DDEF'><dir id='9DDEF'><q id='9DDEF'></q></dir></style></legend>

            <small id='9DDEF'></small><noframes id='9DDEF'>

            <tfoot id='9DDEF'></tfoot>

                • 本文介绍了使用 Owin 从 JWT 获取自定义声明的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

                  问题描述

                  限时送ChatGPT账号..

                  我正在使用带有 JWTBearerAuthentication 的 Owin 来授权用户并验证他们的令牌.我是这样做的:

                  I'm using Owin with JWTBearerAuthentication to authorize users and validate their tokens. I'm doing it like this:

                  public class Startup
                  {
                      public void Configuration(IAppBuilder app)
                      {
                          HttpConfiguration config = new HttpConfiguration();
                          config.MapHttpAttributeRoutes();
                  
                          config.Routes.MapHttpRoute(
                              name: "DefaultApi",
                              routeTemplate: "api/{controller}/{id}",
                              defaults: new { id = RouteParameter.Optional }
                          );
                  
                          ConfigureOAuth(app);
                          app.UseWebApi(config);
                      }
                  
                      private void ConfigureOAuth(IAppBuilder app)
                      {
                          string issuer = ConfigurationManager.AppSettings.Get("auth_issuer");
                          string audience = ConfigurationManager.AppSettings.Get("auth_clientId");
                          byte[] secret = TextEncodings.Base64Url.Decode(ConfigurationManager.AppSettings.Get("auth_secret"));
                  
                          app.UseJwtBearerAuthentication(new JwtBearerAuthenticationOptions 
                          {
                              AuthenticationMode = AuthenticationMode.Active,
                              AllowedAudiences = new [] { audience },
                              IssuerSecurityTokenProviders = new IIssuerSecurityTokenProvider[]
                              {
                                  new SymmetricKeyIssuerSecurityTokenProvider(issuer, secret)
                              }
                          });
                      }
                  }
                  

                  但是,我的令牌中有一些自定义声明,并希望在我的 ApiController 中使用它们的值,如下所示:

                  However, I have some custom claims in my token, and want to use their values in my ApiController, which looks like this:

                  [RoutePrefix("endpoint")]
                  public class MyApiController : ApiController
                  {
                      [Route("action")]
                      [Authorize]
                      public IHttpActionResult Post(string someValue)
                      {
                          bool res = DoSomeAction.withTheString(someValue);
                  
                          if (res)
                          {
                              return Ok<string>(someValue);
                          }
                  
                          return InternalServerError();
                      }
                  }
                  

                  有没有类似 User.Claims["myCustomClaim"].Value 的东西,它提供所有声明的值?

                  Is there anything like User.Claims["myCustomClaim"].Value, which provides the values of all claims?

                  谢谢你,卢卡斯

                  推荐答案

                  这样的事情可能会有所帮助:

                  Something like this might help:

                  var identity = User.Identity as ClaimsIdentity;
                  
                          return identity.Claims.Select(c => new
                          {
                              Type = c.Type,
                              Value = c.Value
                          });
                  

                  这篇关于使用 Owin 从 JWT 获取自定义声明的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!

                  上一篇:Asp.Net Web API oAuth 2.0 无法使用包含与号 (&amp; 下一篇:System.IdentityModel.Tokens 和 Microsoft.IdentityModel.Token

                  相关文章

                  最新文章

                • <small id='wdGCZ'></small><noframes id='wdGCZ'>

                • <i id='wdGCZ'><tr id='wdGCZ'><dt id='wdGCZ'><q id='wdGCZ'><span id='wdGCZ'><b id='wdGCZ'><form id='wdGCZ'><ins id='wdGCZ'></ins><ul id='wdGCZ'></ul><sub id='wdGCZ'></sub></form><legend id='wdGCZ'></legend><bdo id='wdGCZ'><pre id='wdGCZ'><center id='wdGCZ'></center></pre></bdo></b><th id='wdGCZ'></th></span></q></dt></tr></i><div id='wdGCZ'><tfoot id='wdGCZ'></tfoot><dl id='wdGCZ'><fieldset id='wdGCZ'></fieldset></dl></div>

                      <bdo id='wdGCZ'></bdo><ul id='wdGCZ'></ul>

                      <legend id='wdGCZ'><style id='wdGCZ'><dir id='wdGCZ'><q id='wdGCZ'></q></dir></style></legend>
                      <tfoot id='wdGCZ'></tfoot>