web-dev-qa-db-ja.com

Azure Active Directory返信URLが期待どおりに機能しない

Azure Active Directory Webサイト構成の返信URLで2つのURLを指定しました。 1つはローカルコードを実行しているときに自分のローカルホスト環境にリダイレクトするもので、もう1つは製品のWebサイトを実行しているときにAzureがホストするWebサイトにリダイレクトするものです。しかし、Azure Active Directoryはこの設定を無視しているようです。どちらか一方のURLのみを使用し、両方は使用しません。問題と可能な解決策を説明するリンクを見つけましたが、うまくいきませんでした。リンクは次のとおりです。

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

適切な環境にリダイレクトするようにAzure Active Directoryを設定するにはどうすればよいですか?

22
Yasir

あなたはあなたの実装についての詳細を提供していませんが、これはどんな場合でも解決策です。

WIF構成を使用している可能性があります-これは完全にweb.cofingの構成ですが、構成がConfig.Auth.csファイルにあるOWINを使用している可能性もあります。どちらの方法でも、Azure ADのSTSは、呼び出しの発信元に関係なく、既定の応答URIのみを使用します。ユーザーをregistered返信URLの1つに戻すようにAzure ADに指示するには、ReplyUrlを明示的に設定する必要があります。

WIFソリューション

WIFを使用すると、Web構成に次のセクションが含まれます。

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

これは少し不完全です! replywsFederationタグに追加して、Azure ADに新しい返信URLを指示できます。

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

ここでは登録済み返信URLのみを使用できることに注意してください。

返信属性を変更するには、他のすべてのデプロイメント固有のアプリ設定と接続文字列と同じように、web.config変換を安全に使用できます。

OWINソリューション

OWINを使用すると、Startup.Auth.csファイル、または認証設定は直接Startup.csファイル。次のようになります。

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

        app.UseCookieAuthentication(new CookieAuthenticationOptions());

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

OpenIdConnect認証の構成設定に注意してください。 RedirectUriプロパティを追加して、ユーザーをどこにリダイレクトするかを指示できます。

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

RedirectUriをWeb.Configファイルの設定に割り当てることができます。これは、Web.Config変換を使用して処理することもできます。

24
astaykov

OWINの場合、次の構成ソリューションがあります

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

そのため、展開用にビルドしていない場合はローカルリダイレクトを使用します。プロジェクトは、デプロイ用にビルドしているバージョンのDEPLOYを宣言するように構成されています。これにより、Azureで構成された既定のリダイレクトURLが使用されます。

0
Diceyus