2015-01-20 4 views
0

JWTBearerAuthentication과 함께 Owin을 사용하여 사용자를 인증하고 토큰의 유효성을 검사합니다. 나는 이런 식으로 일을 해요 : 그러나Owin을 사용하여 JWT에서 사용자 정의 클레임 가져 오기

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에 그 값을 사용하려면 :

[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과 같은 것? 이 null을 반환

var identity = User.Identity as ClaimsIdentity; 

     return identity.Claims.Select(c => new 
     { 
      Type = c.Type, 
      Value = c.Value 
     }); 

답변

2

뭔가 도움이 될 수 있습니다

내가 접근하고 싶은 주장들. 이 객체에 어떻게 액세스합니까? 편집 : 제 토큰이나 다른 것이 틀렸다고 생각합니다. 재부팅 후 다른 토큰을 사용하면 작동합니다. 고맙습니다!
+0

하지만 신원 객체를 디버깅하는 것은 정체성'보여줍니다 -> 비공개 회원 -> m_instanceClaims'가 포함되어 있습니다

감사합니다, 루카스는이 같은 –

+0

다행입니다. :) –