2016-06-15 4 views
2

내 응용 프로그램은 현재 기본 인증을 사용하고 있지만 OAuth로 전환하려고하므로 두 인증 유형을 모두 사용해야하는 짧은 기간이 있습니다. 내가 HTTP 헤더를 감지한다면 위의 분기 ASP.NET 코어 파이프 라인 인증

public void Configure(IApplicationBuilder application) 
{ 
    application 
     .Use((context, next) => 
     { 
      if (context.Request.Headers.ContainsKey("Basic")) 
      { 
       // Basic 
      } 
      else if (context.Request.Headers.ContainsKey("Authorization")) 
      { 
       // OAuth 
      } 

      return next(); 
     }) 
     .UseStaticFiles() 
     .UseMvc(); 
} 

, 나는 기본 인증을 사용하고, 그렇지 않으면 내가 OAuth를를 사용하는, 그래서처럼 내 ASP.NET의 핵심 파이프 라인을 분기 할 수있는 방법이있다.

+0

누구나 당신이 이미 쓴 미들웨어를 제안 할 것입니다. :) –

답변

4

기술적으로이 같은 UseWhen을 사용할 수 있습니다 : 귀하의 경우에 대한

app.UseWhen(context => context.Request.Headers.ContainsKey("Basic"), appBuilder => 
{ 
    // use basic middleware 
} 
app.UseWhen(context => context.Request.Headers.ContainsKey("Authorization"), appBuilder => 
{ 
    // use oauth authentication 
} 

그러나는 인증 미들웨어는 자신의 인증 핸들러 내부에 이러한 조건을 처리해야하고 조건에 일치하지 않는 경우 그때는 건너 뜁니다. 조건을 처리 할 필요가 없습니다. 그럼 당신은 단지 이러한 인증 미들웨어를 사용할 수 있습니다 :

app.UseBasicAuthentication(); 

app.UseOauthAuthentication(); 
+0

'UseWhen'은 여기에서 찾을 수 있습니다. https://github.com/aspnet-contrib/AspNet.Security.OpenIdConnect.Samples/blob/cdc53b2a132b73bc10fd4dcbb91b169634a589a1/samples/Mvc/Mvc.Server/Extensions/AppBuilderExtensions.cs –