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

重要

自 2025 年 5 月 1 日起,Azure AD B2C 将不再可供新客户购买。 在我们的常见问题解答中了解详细信息

在 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 策略

旧终结点可能如下所示:

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

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

  • 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> 用于 /authorize 终结点。
  • 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> 用于 /logout 终结点。

不受影响终结点

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

此更改不会影响所有终结点,这些终结点不包含 URL 中的策略参数。 它们仅使用 Microsoft Entra ID 的 login.partner.microsoftonline.cn 终结点进行访问,并且不能与 b2clogin.cn 一起使用。 以下示例演示 Microsoft 身份验证平台的有效令牌终结点:

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

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

  • 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> 使用 b2clogin.cn 时。

  • 使用自定义域时: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>

所需更改概述

可能需要对应用程序进行多个修改,以便从 login.partner.microsoftonline.cn 迁移至使用 Azure AD B2C 终结点。

  • 更改标识提供者应用程序中的重定向 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 租户的名称。
  • 如果 URL 中存在,请将其删除 /te

更新应用程序和 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 v1.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”部分。