2016-08-18 3 views
0

Ich verwende die folgende JWT Middleware, um alle Controller mit einer gültigen JWT zu autorisieren, und es funktioniert wie erwartet. Ich muss Client-Zertifikat-basierte Autorisierung auf einem der Controller aktivieren. Ich verstehe, dass ich eine neue Middleware erstellen und sie in owin-Pipeline stecken kann, die Client-Zertifikate überprüft.Owin Middleware pro Controller in ASP.net Web API

Wie wird entschieden, welcher Controller welche Middleware verwendet? Soweit ich weiß, hat OWIN keine Kenntnis von einem Controller. Bitte legen nahe,

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), 

       }     
      }); 

    } 

Antwort

0

Owin „weiß“, welcher Controller wegen der [autorisieren] Tag auf ihm zu genehmigen.

Warum machen Sie das gleiche für das andere System nicht? Erstellen Sie ein anderes Tag, das dann das andere Authentifizierungssystem startet? Es ist der einfachste Weg, ein sauberes System zum Laufen zu bringen.

Sie können mehr als wahrscheinlich den Quellcode verwenden, um etwas Inspiration zu bekommen und genau zu sehen, wie die Dinge gemacht werden.

Verwandte Themen