2014-03-05 4 views
8

현재 웹 API 2, OWIN 미들웨어 및 JWT 기술 조합을 사용하여 새 앱에 대한 클레임 기반 인증을위한 개념 증명을 만들고자합니다.JWT 베어러 토큰을 사용하기 위해 OWIN OAuth 미들웨어 수정

웹 API 2 프로젝트 템플릿을 시작으로 인증을 '개별 사용자 계정'으로 변경했습니다. 내가 작성한 샘플 클라이언트는/Token을 호출하여 토큰을 얻을 수 있었고 OAuth bearer 토큰을 사용하여 샘플 엔드 포인트를 호출 할 수있었습니다. 여태까지는 그런대로 잘됐다. 그때 JwtBearerAuthentication을 시도하고 수 있도록 Startup.Auth.cs에 다음 코드를 추가 : 나는/토큰에 대한 호출에서 JWT를 반환 시작할 것이라고 웹 API이 예상

var jwtOptions = new JwtBearerAuthenticationOptions 
    { 
     AllowedAudiences = audiences, 
     IssuerSecurityTokenProviders = new[] { 
      new SymmetricKeyIssuerSecurityTokenProvider(issuer, signingKey) } 
    }; 

    app.UseJwtBearerAuthentication(jwtOptions); 

하지만이 표시되지 않습니다 아무것도 한거야. 나는 성공하지 못해 며칠 동안 내 머리를 두드리는 소리를 지르고 있었고 Microsoft 문서는 그다지 알려지지 않았습니다.

나는 또한 내가 또한 완전히 잘못된 일을하려고 할 수

AuthorizationCodeFormat = new JwtFormat(audience, new SymmetricKeyIssuerSecurityTokenProvider(issuer, signingKey)) 

내 OAuthAuthorizationServerOptions에 다음을 추가했습니다.

모든 아이디어는 크게 감사하겠습니다.

+0

을 나는 내 자신의 ISecureDataFormat 생성의 과정에있어 그것은 –

+0

당신이 일을 했습니까 AccessTokenFormat에 할당 사용자 정의 ISecureDataFormat 구현을 사용하여 JWT를 발행하는 방법으로 변경하는 방법 – Lukie

+0

이것을 해결 했습니까? 나는 지금 똑같은 일을하기 시작했다. – ChrisC

답변

-2

당신은 당신의 프로젝트에 인증 로직을 writting이 샘플 https://github.com/thinktecture/Thinktecture.IdentityModel/tree/master/samples/OAuth2/EmbeddedResourceOwnerFlow

를 사용할 수 있습니다. 권한 부여가 필요한 각 컨트롤러 또는 작업에 [Authorize] 속성을 추가해야합니다 (OWIN Katana에는 토큰, 인증 및 기타 유용한 것들의 유효성 확인 논리가 포함되어 있습니다).

+0

주어진 샘플 URL이 JWT 기반 인증을 대상으로하지 않습니다. 또는 나는 무엇인가 놓쳤 느냐? –

0

응답에서 토큰이 출력되는 방법을 재정의하는 현재 방법이 없다고 생각합니다. 나는 Katana source code repository의 OAuthAuthorizationServerHandler를 살펴 보았습니다.

InvokeTokenEndpointAsync 메서드에는 응답을 생성하는 JsonTextWriter를 만드는 섹션이 있습니다. 어떤 종류의 확장이 그것에 영향을 줄 수있는 방식으로 수행되지는 않습니다.

나는 이것이 너무 초조함을 느낀다. Microsoft의 라이브러리에는 응답 직렬화를 쉽게 무시할 수있는 방법이 있어야합니다. 사용자 지정 매개 변수를 응답에 추가 할 수도 없습니다.

2

Windows Identity Foundation은 JWT가 아닌 독점 토큰 형식을 사용합니다. 위의 JWT 코드는 토큰을 사용하여이를 생성하지 않고 토큰을 사용합니다. ASP.NET forums에 대한 유용한 토론이 있습니다.

그러나 Microsoft는 2014 년 하반기에 Windows 정체성 기초의 JWT에 대한 지원을 공식적으로 발표했습니다 (JSON Web Token Handler). 설명 된 문제를 해결하려면 해당 패키지를 설치하고 사용할 수 있어야합니다.

5

글쎄, 지금은 OAuthAuthorizationServerOptions에 대한 설정이 있습니다. 예를 들어서하는 것처럼 인증 코드가 아닌 액세스 토큰의 형식을 지정할 수 있습니다.

그래서, 대신 :

AuthorizationCodeFormat = new JwtFormat(audience, new SymmetricKeyIssuerSecurityTokenProvider(issuer, signingKey)) 

당신이 있어야합니다

AccessTokenFormat = new JwtFormat(audience, new SymmetricKeyIssuerSecurityTokenProvider(issuer, signingKey)) 
관련 문제