6

複数のサブドメインと連携するように Azure Active Directory B2C をセットアップできますか? これまでに行ったことは次のとおりです。

  1. 1 つの B2C ディレクトリをセットアップする
  2. 1 つの Web アプリケーションを作成しました: mytest.com - このアプリでの認証と承認は正常に機能します。
  3. 別のアプリを作成しました: subdomain.mytest.com - 同じ Azure B2C Active directory を使用します

今、私が欲しいのはこれです:「mytest.com」にログインすると、「subdomain.mytest.com」にもログインします

これは可能ですか?

私のアプリケーションは、OpenId Connect を使用する ASP.NET MVC アプリです。必要に応じて、より詳細な情報を提供できます。

ありがとう

4

2 に答える 2

5

それを機能させる行:

app.UseCookieAuthentication(新しい CookieAuthenticationOptions() { CookieDomain = ".mytest.com" });

この記事を読んだとき、私はそれを理解しました: https://auth0.com/blog/2014/01/27/ten-things-you-should-know-about-tokens-and-cookies/ (セクション 3)

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

        app.UseCookieAuthentication(new CookieAuthenticationOptions() { CookieDomain = ".mytest.com"});

        var options = new OpenIdConnectAuthenticationOptions
        {
            ClientId = clientIdb2c,
            RedirectUri = redirectUri,
            PostLogoutRedirectUri = redirectUri,
            Notifications = new OpenIdConnectAuthenticationNotifications()
            {
                MessageReceived = (context) =>
                {

                    //AADB2C90091: The user has cancelled entering self-asserted information.
                    if (!string.IsNullOrEmpty(context.ProtocolMessage.ErrorDescription) && !context.ProtocolMessage.ErrorDescription.StartsWith("AADB2C90091:", StringComparison.OrdinalIgnoreCase))
                    {
                        if (context.ProtocolMessage.ErrorDescription.StartsWith("AADB2C99002", StringComparison.OrdinalIgnoreCase))
                        {
                            throw new SecurityTokenValidationException("User does not exist. Please sign up before you can sign in.");
                        }
                    }

                    return Task.FromResult(0);
                },
                RedirectToIdentityProvider = OnRedirectToIdentityProvider,
                AuthenticationFailed = AuthenticationFailed,
                SecurityTokenValidated = (context) =>
                {
                    //Create the logic to redirect here.
                    context.AuthenticationTicket.Properties.RedirectUri = "https://sub1.mytest.com";

                    return Task.FromResult(0);
                }
            },
            Scope = "openid offline_access",
            ResponseType = "id_token",

            // The PolicyConfigurationManager takes care of getting the correct Azure AD authentication
            // endpoints from the OpenID Connect metadata endpoint.  It is included in the PolicyAuthHelpers folder.
            ConfigurationManager = new PolicyConfigurationManager(
                String.Format(CultureInfo.InvariantCulture, aadInstance, tenant, "/v2.0", OIDCMetadataSuffix),
                new string[] { SignUpPolicyId, SignInPolicyId, ProfilePolicyId }),
        };

        app.UseOpenIdConnectAuthentication(options);
    }
于 2016-07-28T14:17:57.520 に答える