2015-07-15 4 views
3

Реализация промежуточного программного обеспечения Owin ищет собственный тип проверки подлинности перед добавлением вызова, поэтому реагирует только соответствующее промежуточное программное обеспечение. Одновременно можно использовать несколько проблем.Задайте задачу в промежуточном программном обеспечении Owin

protected override Task ApplyResponseChallengeAsync() 
{ 
    if (Response.StatusCode == 401) 
    { 
     var challenge = Helper.LookupChallenge(Options.AuthenticationType, Options.AuthenticationMode); 

     if (challenge != null) 
     { 
      Response.Headers.AppendValues("WWW-Authenticate", _challenge); 
     } 
    } 

    return Task.FromResult<object>(null); 
} 

При использовании встроенного в Cookie или Носителя промежуточного слоя, тип «Знаменосец» всегда присутствует и получает посмотрел вверх.

Куда я могу добавить свой собственный тип вызова по всему миру, чтобы его подняли? Это может быть сделано вручную в контексте запроса по телефону

Request.GetOwinContext().Authentication.Challenge("Basic"); 

, но я хотел бы добавить глобальную конфигурацию для всех контроллеров.

ответ

1

Вы можете установить AuthenticationResponseChallenge с использованием методов AuthenticationManager.Challenge(). Например, в вашем startup.cs у вас может быть что-то вроде context.Authentication.Challenge(new AuthenticationProperties(), Options.AuthenticationType), так что промежуточное ПО, которое соответствует Option.AuthenticationType, возвращает эту проблему при поиске.

Активное промежуточное программное обеспечение будет пытаться обрабатывать все исходящие вызовы независимо от его типа аутентификации. Обычно только промежуточное ПО cookie устанавливается на активное, а все другое промежуточное программное обеспечение является пассивным. Для пассивного промежуточного программного обеспечения, чтобы действовать на вызов, задача должна иметь соответствующий AuthenticationType.

+0

Итак, когда я добавляю вызов AuthenticationManager в Startup.cs, 'Microsoft.Owin.Security.Infrastructure.SecurityHelper.LookupChallenge' вернет вызов в моем промежуточном программном обеспечении, верно? –

+0

Как вы получаете доступ к AuthenticationManager в Startup.cs? Я не могу найти пространства имен/классы. –

+0

'context.Authentication.Challenge()'. контекст имеет тип HttpContext и должен быть полезен в вашем startup.cs или контроллере. Свойство Authentication имеет тип AuthenticationManager. – ezile

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

  • Нет связанных вопросов^_^