2016-10-25 6 views
0

Ich richte derzeit eine in Azure gehostete Webanwendung mit Azure Active Directory zur Authentifizierung ein, habe fast alle Fehler behoben, aber ein Problem bleibt bestehen. Wenn sich ein Benutzer in einem anderen Verzeichnis angemeldet hat, bevor er auf meine Anmeldeseite geklickt hat (in diesem Fall handelt es sich um eine Office 365-Anmeldung für E-Mails), scheint der Berechtigungsnachweis im Cache gespeichert zu sein, und Azure versucht, ihn zu verwenden So kann ich den Anmeldebildschirm bei jeder Anmeldung erzwingen und die Wiederverwendung einer zwischengespeicherten Anmeldeinformationen vermeiden?ADAL Azure AD Authentifizierung Login des Benutzers aus verschiedenen Azure AD-Sitzung

Bei der Projekteinrichtung handelt es sich hauptsächlich um eine standardmäßige ASP.NET MVC-Architektur mit standardmäßigen Azure Active Directory-Authentifizierungseinstellungen.

Danke!

A screenshot of the MS login page with error

+0

Können Sie bitte den Fehler in Ihre Frage kopieren, anstatt nur einen Screenshot? Der spezifische Fehler an der Unterseite, dass Sie einen blauen Kreis freihändig bezüglich "existiert nicht in ..."? – gravity

Antwort

0

die Lösung so schnell entdeckt, wie ich geschrieben. Implementiert ein Abmelden und eine Selbstredirect zur Anmeldemethode. Code ist unter:

public void SignIn(bool? signedOut) 
    { 
     // Send an OpenID Connect sign-in request. 
     if (!Request.IsAuthenticated) 
     { 
      // If the user is currently logged into another directory, log them out then attempt to 
      // reauthenticate under this directory 
      if (signedOut == null || signedOut == false) 
      { 
       HttpContext.GetOwinContext().Authentication.SignOut(
      new AuthenticationProperties { RedirectUri = Url.Action("SignIn", "Account", routeValues: new { signedOut = true }, protocol: Request.Url.Scheme) }, 
      OpenIdConnectAuthenticationDefaults.AuthenticationType, CookieAuthenticationDefaults.AuthenticationType); 
      } 
      else 
      { 
       HttpContext.GetOwinContext().Authentication.Challenge(new AuthenticationProperties { RedirectUri = "/" }, 
        OpenIdConnectAuthenticationDefaults.AuthenticationType); 
      } 
     } 
    } 

Danke trotzdem!

0

Es gibt zwei bessere Möglichkeiten, damit umzugehen. Verwenden Sie zunächst den mandantenspezifischen Azure AD-Endpunkt für Ihre App. Ihr authority sollte https://login.microsoftonline.com/<name-of-your-tenant> sein. Dadurch stellen Sie sicher, dass nur Nutzer Ihres Mandanten sich anmelden können. Wenn ein Benutzer jedoch versucht, sich mit einem Konto von einem anderen Mandanten anzumelden (indem er eine vorhandene Sitzung auswählt oder eine neue Sitzung startet), erhalten sie den Fehler, den Sie scannen. Keine Möglichkeit, das zu verhindern.

Wenn Sie sicherstellen möchten, dass der Benutzer bei jeder Anmeldung in der App seinen Benutzernamen/sein Passwort eingibt, können Sie den Abfrageparameter prompt=login in der Anmeldeanforderung senden. Aber bedenken Sie, dass dies SSO für Ihre Benutzer bricht.

+0

Ihre zweite Option ist ansprechender, da Single Sign On in diesem Fall nicht so wichtig ist. Können Sie genau beschreiben, wie der Abfrageparameter über die Challenge-Methode angefügt wird? Ich bin mehrere Male durch die OWIN-Dokumentation gegangen und kann nicht herausfinden, wie? Danke, Craig –

Verwandte Themen