2016-08-18 4 views
0

Я использую следующее промежуточное программное обеспечение JWT для авторизации всех контроллеров с действующим JWT и работает как ожидалось. Мне нужно включить авторизацию на основе сертификата клиента на одном из контроллеров. Я понимаю, что я могу создать новое промежуточное ПО и подключить его к конвейеру owin, который проверяет сертификаты клиентов.Owin Middleware для каждого контроллера в web-интерфейсе asp.net

Как решить, какой контроллер использовать какое промежуточное ПО? Насколько я знаю, 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, чтобы получить вдохновение и понять, как это делается.

Смежные вопросы