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
});
하지만 신원 객체를 디버깅하는 것은 정체성'보여줍니다 -> 비공개 회원 -> m_instanceClaims'가 포함되어 있습니다
감사합니다, 루카스는이 같은 –다행입니다. :) –