将 Azure Active Directory B2C 的重定向 URL 设置为 b2clogin.cn

在 Azure Active Directory B2C (Azure AD B2C) 应用程序中设置用于注册和登录的标识提供者时,需要指定 Azure AD B2C 标识提供者的终结点。 请不要再在应用程序和 API 中引用 login.partner.microsoftonline.cn 来对用户进行 Azure AD B2C 身份验证。 而是对所有应用程序使用 b2clogin.cn。

此更改适用于哪些终结点

转换为 b2clogin.cn 仅与以下终结点相关:使用 Azure AD B2C 策略(用户流或自定义策略)对用户进行身份验证的身份验证终结点。 这些终结点的 <policy-name> 参数指定 Azure AD B2C 应使用的策略。 详细了解 Azure AD B2C 策略

旧版终结点可能如下所示:

  • /authorize 终结点的 https://login.microsoft.com/<tenant-name>.partner.onmschina.cn/<policy-name>/oauth2/v2.0/authorizehttps://login.microsoft.com/<tenant-name>.partner.onmschina.cn/oauth2/v2.0/authorize?p=<policy-name>
  • /logout 终结点的 https://login.microsoft.com/<tenant-name>.partner.onmschina.cn/<policy-name>/oauth2/v2.0/logouthttps://login.microsoft.com/<tenant-name>.partner.onmschina.cn/oauth2/v2.0/logout?p=<policy-name>

相应的更新终结点类似于以下终结点:

  • /authorize 终结点的 https://<tenant-name>.b2clogin.cn/<tenant-name>.partner.onmschina.cn/<policy-name>/oauth2/v2.0/authorizehttps://<tenant-name>.b2clogin.cn/<tenant-name>.partner.onmschina.cn/oauth2/v2.0/authorize?p=<policy-name>
  • /logout 终结点的 https://<tenant-name>.b2clogin.cn/<tenant-name>.partner.onmschina.cn/<policy-name>/oauth2/v2.0/logouthttps://<tenant-name>.b2clogin.cn/<tenant-name>.partner.onmschina.cn/oauth2/v2.0/logout?p=<policy-name>

不受影响的终结点

一些客户使用 Microsoft Entra 企业租户的共享功能。 例如,获取访问令牌以调用 Azure AD B2C 租户的 MS Graph API

此更改并不会影响任何在 URL 中不包含策略参数的终结点。 它们只能通过 Microsoft Entra ID 的 login.partner.microsoftonline.cn 终结点进行访问,并且不能与 b2clogin.cn 一起使用。 以下示例显示 Microsoft Entra 平台的有效令牌终结点:

https://login.partner.microsoftonline.cn/<tenant-name>.partner.onmschina.cn/oauth2/v2.0/token

但是,如果只想获取令牌来对用户进行身份验证,则可以指定应用程序希望用于对用户进行身份验证的策略。 在此情况下,更新的 /token 终结点类似于以下示例。

  • 使用 b2clogin.cn 时,为 https://<tenant-name>.b2clogin.cn/<tenant-name>.partner.onmschina.cn/<policy-name>/oauth2/v2.0/tokenhttps://<tenant-name>.b2clogin.cn/<tenant-name>.partner.onmschina.cn/oauth2/v2.0/token?p=<policy-name>

  • 使用自定义域时,为 https://login.contoso.com/<tenant-name>.partner.onmschina.cn/<policy-name>/oauth2/v2.0/tokenhttps://login.contoso.com/<tenant-name>.partner.onmschina.cn/oauth2/v2.0/token?p=<policy-name>

所需的更改概述

若要使用 Azure AD B2C 终结点从 login.partner.microsoftonline.cn 迁移应用程序,可能需要做出一些修改:

  • 将标识提供者应用程序中的重定向 URL 更改为引用 b2clogin.cn。 有关详细信息,请遵循更改标识提供者重定向 URL 指南。
  • 将 Azure AD B2C 应用程序更新为在其用户流和令牌终结点引用中使用 b2clogin.cn。 此更改可能包括更新对诸如 Microsoft 身份验证库 (MSAL) 之类的身份验证库的使用。
  • 更新在 CORS 设置中为用户界面自定义定义的“允许的源”

更改标识提供者重定向 URL

在创建应用程序的每个标识提供者网站上,将所有受信任 URL 更改为重定向到 your-tenant-name.b2clogin.cn 而不是 login.partner.microsoftonline.cn

对于 b2clogin.cn 重定向 URL,可以使用两种格式。 第一种格式使用租户 ID (GUID) 来替代租户域名,其优点是无需在 URL 中的任何位置显示“Microsoft”。 请注意,authresp 终结点可能不包含策略名称。

https://{your-tenant-name}.b2clogin.cn/{your-tenant-id}/oauth2/authresp

第二个选项使用 your-tenant-name.partner.onmschina.cn 格式的租户域名。 例如:

https://{your-tenant-name}.b2clogin.cn/{your-tenant-name}.partner.onmschina.cn/oauth2/authresp

对于这两种格式:

  • {your-tenant-name} 替换为 Azure AD B2C 租户的名称。
  • 删除 /te(如果 URL 中存在此参数)。

更新应用程序和 API

已启用 Azure AD B2C 的应用程序和 API 中的代码可能在多个位置引用了 login.partner.microsoftonline.cn。 例如,代码可能引用了用户流和令牌终结点。 请更新以下代码,以改为引用 your-tenant-name.b2clogin.cn

  • 授权终结点
  • 令牌终结点
  • 令牌颁发者

例如,Contoso 注册/登录策略的机构终结点现在为:

https://contosob2c.b2clogin.cn/00000000-0000-0000-0000-000000000000/B2C_1_signupsignin1

若要了解如何将基于 OWIN 的 Web 应用迁移到 b2clogin.cn,请参阅将基于 OWIN 的 Web API 迁移到 b2clogin.cn

如需了解如何迁移受 Azure AD B2C 保护的 Azure API 管理 API,请参阅使用 Azure AD B2C 保护 Azure API 管理 API迁移到 b2clogin.cn 部分。

Microsoft 身份验证库 (MSAL)

MSAL.NET ValidateAuthority 属性

如果使用 MSAL.NET v2 或更低版本,请在客户端实例化中将 ValidateAuthority 属性设置为 false,以允许重定向到 b2clogin.cn。 在 MSAL.NET v3 和更高版本中不需要将此值设置为 false

ConfidentialClientApplication client = new ConfidentialClientApplication(...); // Can also be PublicClientApplication
client.ValidateAuthority = false; // MSAL.NET v2 and earlier **ONLY**

MSAL for JavaScript validateAuthority 属性

如果你使用的是 MSAL for JavaScript v 1.2.2 或更早版本,请将“validateAuthority”属性设置为 false

// MSAL.js v1.2.2 and earlier
this.clientApplication = new UserAgentApplication(
  env.auth.clientId,
  env.auth.loginAuthority,
  this.authCallback.bind(this),
  {
    validateAuthority: false // Required in MSAL.js v1.2.2 and earlier **ONLY**
  }
);

如果在 MSAL.js 1.3.0+(默认值)中设置 validateAuthority: true,则还需要使用 knownAuthorities 指定有效的令牌颁发者:

// MSAL.js v1.3.0+
this.clientApplication = new UserAgentApplication(
  env.auth.clientId,
  env.auth.loginAuthority,
  this.authCallback.bind(this),
  {
    validateAuthority: true, // Supported in MSAL.js v1.3.0+
    knownAuthorities: ['tenant-name.b2clogin.cn'] // Required if validateAuthority: true
  }
);

后续步骤

若要了解如何将基于 OWIN 的 Web 应用迁移到 b2clogin.cn,请参阅将基于 OWIN 的 Web API 迁移到 b2clogin.cn

如需了解如何迁移受 Azure AD B2C 保护的 Azure API 管理 API,请参阅使用 Azure AD B2C 保护 Azure API 管理 API迁移到 b2clogin.cn 部分。