2015-05-21 24 views
19

Ich habe zwei URLs in meiner Azure Active Directory-Website-Konfigurationsantwort-URL angegeben. Eine, die auf meine lokale Host-Umgebung umgeleitet wird, wenn ich lokalen Code ausführe, und eine, die auf meine von Azure gehostete Website umgeleitet wird, wenn ich die prod-Website betreibe. Aber Azure Active Directory scheint die Einstellung zu ignorieren. Es verwendet nur die eine oder die andere URL, aber nicht beide. Ich sah einen Link, der das Problem und eine mögliche Lösung beschreibt, aber es funktionierte nicht für mich. Der Link lautet:Azure Active Directory-Antwort-URL funktioniert nicht erwartungsgemäß

http://samritchie.net/2013/07/17/azure-ad-single-sign-on-with-multiple-environments-reply-urls/

Wie kann ich Setup Azure Active Directory, um geeignete Umgebung umgeleitet werden?

+0

Verwenden Sie OWIN für Ihre Authentifizierung? – Aram

+0

Ich bin mir nicht sicher, was Ihre genaue Konfiguration ist, das Hinzufügen von spezifischen replyUrl zu web.config transformiert geholfen. Bitte lesen Sie das Konfigurations-Snippet am Ende des Posts http://do4urka.com/partical-authentication-with-azure-active-directory-with-ws-federation-in-an-mvc-application/ – DivineOps

Antwort

20

Sie geben keine Details zu Ihrer Implementierung an, aber hier ist eine Lösung für jeden Fall.

Sie könnten WIF config verwenden - das ist vollständig Konfiguration in Ihrem web.cofing, oder Sie könnten OWIN verwenden, wo die Konfiguration in Ihrer Datei Config.Auth.cs ist. In beiden Fällen verwendet der STS von Azure AD nur den Standardantwort-URI, unabhängig davon, woher die Anrufe kommen. Sie müssen ReplyUrl explizit festlegen, damit Azure AD den Benutzer an eine der registrierten Antwort-URLs zurücksendet.

WIF-Lösung

Wenn Sie WIF verwenden, enthält Ihre Web-Config Abschnitt folgendermaßen vor:

<system.identityModel.services> 
    <federationConfiguration> 
     <cookieHandler requireSsl="true" /> 
     <wsFederation passiveRedirectEnabled="true" 
        issuer="https://login.windows.net/yourtenant.com/wsfed" 
        realm="https://yourtenant.com/WebSingleTenant" 
        requireHttps="true" /> 
    </federationConfiguration> 
    </system.identityModel.services> 

, die ein bisschen incomplere ist! Sie können eine reply zum wsFederation Tag fügen Sie die Azure AD für die neue Antwort-URL zu instruieren:

<wsFederation passiveRedirectEnabled="true" 
       issuer="https://login.windows.net/yourtenant.com/wsfed" 
       realm="https://yourtenant.com/WebSingleTenant" 
       reply="http://any_registered_url/" 
       requireHttps="true" /> 

Beachten Sie, dass hier nur ein registriert Antwort URLs verwenden können.

Um das Antwortattribut zu ändern, können Sie die web.config-Transformationen wie für alle anderen implementierungsspezifischen App-Einstellungen und Verbindungszeichenfolgen verwenden.

OWIN Lösung

Wenn Sie OWIN verwenden, würden Sie Startup.Auth.cs Datei haben oder Ihre Authentifizierungskonfiguration direkt in Ihr Startup.cs Datei sein wird. Es würde in etwa wie folgt aussehen:

Beachten Sie die Konfigurationseinstellungen für die OpenIdConnect-Authentifizierung. Sie können eine RedirectUri Eigenschaft hinzufügen zu instruieren, wo der Benutzer umleiten zu:

 app.UseOpenIdConnectAuthentication(
      new OpenIdConnectAuthenticationOptions 
      { 
       ClientId = clientId, 
       Authority = authority, 
       PostLogoutRedirectUri = postLogoutRedirectUri, 
       RedirectUri = "any_registered_redirect_uri" 
      }); 

Sie können RedirectUri in Web.Config-Datei auf eine Einstellung zuweisen, die auch Web.Config Transformationen Sie behandeln können.

0

Für den Fall OWIN habe ich die folgende Konfiguration Lösung

  app.UseOpenIdConnectAuthentication(
      new OpenIdConnectAuthenticationOptions 
      { 
       ClientId = clientId, 
       Authority = authority, 
       PostLogoutRedirectUri = postLogoutRedirectUri 
       #if !DEPLOY 
       ,RedirectUri = "https://localhost:44369/" 
       #endif 
      }); 

So verwendet es eine lokale Umleitung, wenn ich nicht für den Einsatz bauen werde. Das Projekt ist so konfiguriert, dass es DEPLOY für die Version deklariert, die ich für die Bereitstellung erstelle. Auf diese Weise wird die Standard-Weiterleitungs-URL in Azure verwendet.

Verwandte Themen