2016-06-30 15 views
1

Ich benutze die OWIN WsFederation, um Benutzer zu authentifizieren. Ich möchte einen Anspruch erheben und eine zusätzliche Überprüfung durchführen, um festzustellen, ob diese eindeutige Benutzer-ID in einer Datenbank für den Zugriff gespeichert ist. Wenn nicht, möchte ich einen Benutzer zu einer Ansicht umleiten, die eine Nachricht anzeigt. Ich habe eine Benachrichtigung "SecurityTokenValidated" abonniert, in dieser Benachrichtigung werde ich den Anspruch erfassen und überprüfen, ob der Benutzer existiert. Aus meiner Sicht wird SecurityTokenValidated nach der Erstellung des Cookies aufgerufen, daher kann dies zu spät sein.Inkludieren der WsFederation-Authentifizierung

Wie leite ich den Benutzer zu einer Ansicht um, damit er weiß, dass er keinen Zugriff hat?

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); 
     } 
    } 
}); 

Antwort

1

Sie können eine Ausnahme auslösen, um den Ablauf der Authentifizierung zu blockieren. So etwas wie dieses

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

Fügen Sie dem Ausnahmehandler eine freundliche Nachricht zu dem Benutzer hinzu.