2015-05-21 14 views
19

Podaję dwa adresy URL w adresie URL odpowiedzi konfiguracji witryny Azure Active Directory. Jeden, aby przekierować do mojego środowiska lokalnego, gdy uruchamiam kod lokalny i przekierowuję do mojej witryny hostowanej na Azure, gdy prowadzę stronę prod. Jednak katalog Active Directory Azure wydaje się ignorować ustawienie. Używa tylko jednego lub drugiego adresu URL, ale nie obu. Widziałem link opisujący problem i możliwe rozwiązanie, ale nie zadziałało to dla mnie. Łącze jest:URL odpowiedzi usługi Active Directory usługi Azure nie działa zgodnie z oczekiwaniami.

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

Jak skonfigurować Azure Active Directory przekierowanie do odpowiedniego środowiska?

+0

Czy używasz OWIN do uwierzytelniania? – Aram

+0

Nie jestem pewien, jaka jest twoja dokładna konfiguracja, dodanie konkretnej odpowiedzi do transformacji web.config pomogło. Zobacz fragment kodu konfiguracji na końcu artykułu http://do4urka.com/partial-authentication-with-azure-active-directory-with-ws-federation-in-an-mvc-application/ – DivineOps

Odpowiedz

20

Nie podajecie szczegółów na temat swojej implementacji, ale tutaj jest rozwiązanie dla każdego przypadku.

Możesz używać konfiguracji WIF - która jest w pełni konfiguracją w twoim web.cofing, lub możesz używać OWIN, gdzie konfiguracja jest w twoim pliku Config.Auth.cs. W każdym razie STS Azure AD użyje tylko domyślnego URI odpowiedzi, niezależnie od tego, skąd pochodzą połączenia. Musisz jawnie ustawić opcję ReplyUrl, aby poinstruować usługę Azure AD, aby zwróciła użytkownika z powrotem na jeden z adresów URL odpowiedzi zarejestrowanych pod numerem.

rozwiązanie WIF

Podczas korzystania WIF, twój config internetowa zawiera następujące części:

<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> 

który jest nieco incomplere! Można dodać reply do znacznika wsFederation pouczyć Azure AD na nowy post URL:

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

Zauważ, że tutaj można korzystać tylko z zarejestrowanych odpowiedź adresy URL.

Aby zmodyfikować atrybut odpowiedzi, można bezpiecznie używać transformacji web.config tak samo jak we wszystkich innych ustawieniach aplikacji i łańcuchu połączenia.

OWIN Rozwiązanie

Podczas korzystania OWIN, trzeba Startup.Auth.cs plik lub konfiguracja uwierzytelniania będzie bezpośrednio do pliku Startup.cs. Wyglądałoby to mniej więcej tak:

public void ConfigureAuth(IAppBuilder app) 
    { 
     app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults. 
      AuthenticationType); 

     app.UseCookieAuthentication(new CookieAuthenticationOptions()); 

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

Zapisz ustawienia konfiguracji dla uwierzytelniania OpenIdConnect. Można dodać obiekt RedirectUri polecić gdzie przekierować użytkownika do:

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

można przypisać RedirectUri do ustawienia w pliku web.config, który również będzie można obsługiwać za pomocą przekształceń web.config.

0

Dla przypadku OWIN Mam następujące rozwiązanie konfiguracji

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

więc używa lokalnej przekierowanie kiedy nie buduję do wdrożenia. Projekt jest skonfigurowany do deklarowania DEPLOY dla wersji, którą buduję dla wdrożenia. W ten sposób korzysta z domyślnego adresu URL przekierowania skonfigurowanego na platformie Azure.

Powiązane problemy