2

.NET WebAPI 프로젝트의 JwtBearerAuthentication Katana 미들웨어를 사용하여 JWT를 통해 웹 API를 보호합니다.WebAPI의 Jwt Bearer 인증 미들웨어로 WWW-Authenticate Challenge 헤더 사용자 정의

app.UseJwtBearerAuthentication(
      new JwtBearerAuthenticationOptions 
      { 
       AuthenticationMode = AuthenticationMode.Active, 
       AllowedAudiences = new[] { audience }, 
       IssuerSecurityTokenProviders = new IIssuerSecurityTokenProvider[] 
       { 
        new SymmetricKeyIssuerSecurityTokenProvider(issuer, secret) 
       } 
      }); 

모든 것은 한 가지를 제외하고, 좋은 작품 :

그래서, 내 시작 클래스에 난 그냥 같은 간단한 일을하고 있어요.

클라이언트가 잘못되었거나 누락 된 Bearer 토큰을 전달할 때 WWW-Authenticate 응답 헤더는 "Bearer"입니다.

권한 부여 서버의 주소와 지원되는 부여 유형을 포함하도록이 헤더를 사용자 정의하고 싶습니다.

더 비슷해 : WWW 인증 : MyAuth HREF = URL, grant_type는 = 또는 무엇이든 ...

이 작업을 수행하는 가장 좋은 방법은 무엇입니까 "- 보조금 지원"? JwtBearerAuthenticationOptions 클래스에 Challenge 속성이 포함되어 있지 않습니다. 나는이 문제를 해결할 수 있지만, Jwt 미들웨어를 사용하는 것이 가장 좋은지 아닌지 알고 싶다.

답변

2

OAuthBearerAuthenticationProvider 내에서 OnApplyChallenge를 사용하여 원하는 값으로 WWW-Authenticate 헤더를 삽입했습니다. 의 라인을 따라

뭔가 : 인증 필터에 비해

app.UseJwtBearerAuthentication(new JwtBearerAuthenticationOptions ... 
    Provider = new OAuthBearerAuthenticationProvider().... 
     OnApplyChallenge = (context) => context.OwinContext.Response.Headers.AppendValue(WWWAuthenticateHeader,values) 
+0

더 나은 : 당신이 필터를 구현의 복잡성을 필요가 없습니다 당신은 항상 같은 도전을 설정합니다. 챌린지는 웹 API 미들웨어가 아니라 oauth 미들웨어에서 설정됩니다. – Bombinosh