2015-09-09 2 views
7

Ich erstelle eine MVC-Anwendung mit Azure Active Directory-Authentifizierung. Wenn ich mich lokal entwickle, möchte ich mich für Test-/Entwicklungszwecke anmelden können. Und die App-URL ist wie http://localhost:43400. Dies ist auch in der AD-Anmeldung in Sign-On Url und Reply Url codiert.Verwenden von Azure Active Directory - eine Anwendung für die lokale Anmeldung und die Veröffentlichung

Wenn ich die gleiche App auf dem Server bereitstellen, wird die App-URL geändert - wird so etwas wie myappname.azurewebsites.net und ich kann mich nicht mit der gleichen AD-Anwendung anmelden. Das Beste, was ich schaffen konnte, ist, den Login-Prozess zu durchlaufen, aber dann leitet AD mich zurück zu localhost:43400, was falsch ist.

Es gibt PostLogoutRedirectUri Eigenschaft in Startup.Auth.cs, die ich der App geben, aber es macht überhaupt keinen Unterschied.

Gibt es eine Möglichkeit, eine lokale Anwendung und eine bereitgestellte Anwendung mit demselben Azure AD zu verwenden?

Ich kann 2 AD Applikaiton mit verschiedenen URLs und Tasten und schreibe die Werte in web.config auf Deploy. Aber das klingt nicht nach der besten Lösung. Kann ich sonst noch etwas tun?

UPD

Hier ist das Bit ich in Startup.Auth.cs zu verweisen:

app.UseOpenIdConnectAuthentication(
    new OpenIdConnectAuthenticationOptions 
    { 
     ClientId = clientId, 
     Authority = Authority, 
     PostLogoutRedirectUri = postLogoutRedirectUri, // <-- this is coming from web.config, different in dev and prod 

     Notifications = new OpenIdConnectAuthenticationNotifications() 
     { 
      ..... 

     } 
    }); 

vollständige Code anzeigen here auflistet.

Und in Azure AD Anwendung habe ich versucht, beiden Adressen als Antwort URL zur gleichen Zeit: Azure AD Application Reply URL

Aber die AD nur eine der Adressen verwendet zu umleiten, auch wenn der Kunde der Umleitung angegeben, die übereinstimmt der Aufzeichnungen.

+0

Können Sie nicht zwei separate Anwendungen in diesem Azure AD erstellen? –

+0

Ich kann - das ist, was mein letzter Teil der Frage sagt. Gibt es einen besseren Weg? – trailmax

+0

Sorry ... habe diesen Teil nicht gelesen! Eine andere Sache, die Sie tun können, ist Redirect-URIs für beide Umgebungen in der gleichen Anwendung. Was ich versucht habe, ist mehrere Umleitungs-URIs für die gleiche Umgebung (eine für die Anmeldung und andere für die Anmeldung) in meiner Anwendung, aber Sie könnten es versuchen. –

Antwort

9

Sie können mehrere Umleitungs-URIs zu Ihrer App hinzufügen, deshalb ist die Eigenschaft als Liste implementiert! Sie müssen nur sicherstellen, dass Sie angeben, welcher URI zur Laufzeit verwendet werden soll. Sie können dies auf verschiedene Arten tun: Sie können den Rückgabe-URI bei der Middleware-Init-Zeit angeben, oder Sie können dynamischen Code hinzufügen, der einen Umleitungs-URI in die Anmeldemeldung einfügt. Ein Beispiel für den letzteren Ansatz finden Sie unter RedirectToIdentityProvider unter https://github.com/AzureADSamples/WebApp-MultiTenant-OpenIdConnect-DotNet/blob/master/TodoListWebApp/App_Start/Startup.Auth.cs

+0

Ich habe versucht, beide Adressen in dieser Liste aufzulisten, aber wahrscheinlich habe ich einen Weg gefunden, den zu spezifizieren, den ich brauche. Sprechen Sie in diesem Codebeispiel über den RedirectToIdentityProvider-Teil? Übrigens, ich habe ein bisschen mehr Code in die Frage eingefügt. – trailmax

+1

Ja, ich meine RedirectToIdentityProvider. Dadurch können Sie eine einzige adaptive Codebase verwenden, die zur Laufzeit den richtigen Umleitungs-URI injiziert. Wie ich auch andeutete: Wenn Sie eine statische Zeichenkette kurz vor der Implementierung ändern möchten, können Sie immer den einen der beiden URIs angeben, die Sie direkt in der Middleware-Initialisierung verwenden möchten. Sie übergeben RedirectUri genau so, wie Sie PostLogoutRedirectUri übergeben heute. – vibronet

+0

Haben Sie! Ich werde es morgen versuchen, wenn ich wieder im Büro bin. – trailmax

Verwandte Themen