2016-08-18 1 views
0

J'utilise le middleware JWT suivant pour autoriser tous les contrôleurs avec un JWT valide et cela fonctionne comme prévu. Je dois activer l'autorisation basée sur un certificat client sur l'un des contrôleurs. Je comprends que je peux créer un nouveau middleware et le brancher dans owin pipeline qui valide les certificats clients. Comment décider quel contrôleur utiliser quel middleware? Autant que je sache, OWIN n'a aucune connaissance d'un contrôleur. S'il vous plaît suggérerMiddleware Owin par contrôleur dans API Web asp.net

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

       }     
      }); 

    } 

Répondre

0

Owin "sait" quel contrôleur autoriser en raison de la balise [Authorize] sur le dessus. Pourquoi ne faites-vous pas la même chose pour l'autre système? Créer une autre balise qui déclenche ensuite l'autre système d'authentification? C'est la façon la plus simple de faire fonctionner un système propre.

Vous pouvez très probablement utiliser le code source owin pour vous inspirer et voir exactement comment les choses sont faites.