2016-06-30 3 views
1

Я использую OWIN WsFederation для аутентификации пользователей, я хотел бы получить заявку и выполнить дополнительную проверку, чтобы узнать, находится ли этот уникальный идентификатор пользователя в базе данных для доступа. Если нет, я хотел бы перенаправить пользователя в представление, отображающее сообщение. Я подписался на уведомление «SecurityTokenValidated», в этом уведомлении я возьму заявку и проверю, существует ли пользователь. Из моего понимания SecurityTokenValidated вызывается после того, как файл cookie был создан, поэтому это может быть слишком поздно.Неверная проверка подлинности WsFederation

Как перенаправить пользователя на представление, сообщив им, что у них нет доступа?

app.UseWsFederationAuthentication(
new WsFederationAuthenticationOptions 
    { 
    Wtrealm = AppSettings.IdpRealm, 
    MetadataAddress = AppSettings.IdpMetadata,     

    Notifications = new WsFederationAuthenticationNotifications 
    { 
     // check and create additional claims 
     SecurityTokenValidated = notification => 
     { 
      // identity object to access claims from IDP 
      var identity = notification.AuthenticationTicket.Identity; 

      // get claim and check database 


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

ответ

1

Вы можете создать исключение для блокировки потока аутентификации. Что-то вроде этого

throw new System.IdentityModel.Tokens.SecurityTokenValidationException(); 

В обработчике исключений добавьте дружественное сообщение пользователю.