2016-08-18 57 views
0

我正在使用以下JWT中間件來授權具有有效JWT的所有控制器,並且它按預期工作。我需要在其中一個控制器上啓用基於客戶端證書的授權。我知道我可以創建一個新的中間件並將其插入驗證客戶端證書的owin管道中。asp.net web API中的每個控制器的Owin中間件

如何決定哪個控制器使用哪個中間件?據我所知,OWIN沒有任何控制器的知識。請建議

public void ConfigureAuth(IAppBuilder app) 
    { 
     TextEncodings.Base64Url.Decode("IxrAjDoa2FqElO7IhrSrUJELhUckePEPVpaePlS_Xaw"); 

     var issuer = System.Configuration.ConfigurationManager.AppSettings["issuer"].ToString(); 
     var audience = System.Configuration.ConfigurationManager.AppSettings["ClientID"].ToString(); 
     var secret = TextEncodings.Base64Url.Decode(System.Configuration.ConfigurationManager.AppSettings["ClientSecret"].ToString()); 
     // Api controllers with an [Authorize] attribute will be validated with JWT 
     app.UseJwtBearerAuthentication(
      new JwtBearerAuthenticationOptions 
      { 
       AuthenticationMode = AuthenticationMode.Active, 
       AllowedAudiences = new[] { audience }, 
       IssuerSecurityTokenProviders = new IIssuerSecurityTokenProvider[] 
       { 
        new SymmetricKeyIssuerSecurityTokenProvider(issuer, secret), 

       }     
      }); 

    } 

回答

0

Owin「知道」哪個控制器要授權,因爲它上面有[Authorize]標籤。

你爲什麼不爲其他系統做同樣的事情?創建另一個標籤,然後啓動另一個認證系統?這是保持清潔系統工作的最簡單方法。

你可能更多地使用owin源代碼來獲得一些靈感和準確的事情。