將 Azure Active Directory B2C 的重新導向 URL 設定為 b2clogin.com

當您在 Azure Active Directory B2C (Azure AD B2C) 應用程式中針對註冊和登入設定識別提供者時,必須指定 Azure AD B2C 重新導向 URL 的端點。 您不應再在應用程式和 API 中參考 login.microsoftonline.com,以使用 Azure AD B2C 來驗證使用者。 請改用 b2clogin.com 或所有應用程式的自訂網域

套用此項變更的端點

轉換至 b2clogin.com 僅適用於使用 Azure AD B2C 原則 (使用者流程或自訂原則) 來驗證使用者的驗證端點。 這些端點都有 <policy-name> 參數,可指定 Azure AD B2C 應使用的原則。 深入了解 Azure AD B2C 原則

這些舊的端點看起來可能像這樣:

  • /authorize 端點:https://login.microsoft.com/<tenant-name>.onmicrosoft.com/<policy-name>/oauth2/v2.0/authorizehttps://login.microsoft.com/<tenant-name>.onmicrosoft.com/oauth2/v2.0/authorize?p=<policy-name>
  • /logout 端點:https://login.microsoft.com/<tenant-name>.onmicrosoft.com/<policy-name>/oauth2/v2.0/logouthttps://login.microsoft.com/<tenant-name>.onmicrosoft.com/oauth2/v2.0/logout?p=<policy-name>

對應的已更新端點看起來會類似下列端點:

  • /authorize 端點:https://<tenant-name>.b2clogin.com/<tenant-name>.onmicrosoft.com/<policy-name>/oauth2/v2.0/authorizehttps://<tenant-name>.b2clogin.com/<tenant-name>.onmicrosoft.com/oauth2/v2.0/authorize?p=<policy-name>
  • /logout 端點:https://<tenant-name>.b2clogin.com/<tenant-name>.onmicrosoft.com/<policy-name>/oauth2/v2.0/logouthttps://<tenant-name>.b2clogin.com/<tenant-name>.onmicrosoft.com/oauth2/v2.0/logout?p=<policy-name>

搭配 Azure AD B2C 自訂網域,對應的已更新端點看起來會類似下列端點。 您可以使用下列任一端點:

  • /authorize 端點:https://login.contoso.com/<tenant-name>.onmicrosoft.com/<policy-name>/oauth2/v2.0/authorizehttps://login.contoso.com/<tenant-name>.onmicrosoft.com/oauth2/v2.0/authorize?p=<policy-name>
  • /logout 端點:https://login.contoso.com/<tenant-name>.onmicrosoft.com/<policy-name>/oauth2/v2.0/logouthttps://login.contoso.com/<tenant-name>.onmicrosoft.com/oauth2/v2.0/logout?p=<policy-name>

不受影響的端點

有些客戶使用 Microsoft Entra 企業租用戶的共用功能。 例如,取得存取權杖以呼叫 Azure AD B2C 租用戶的 MS 圖形 API

這項變更不會影響 URL 中未包含原則參數的所有端點。 這些端點只能透過 Microsoft Entra ID 的 login.microsoftonline.com 端點進行存取,而且無法與 b2clogin.com 或自訂網域搭配使用。 以下範例顯示 Microsoft 身分識別平台的有效權杖端點:

https://login.microsoftonline.com/<tenant-name>.onmicrosoft.com/oauth2/v2.0/token

不過,如果您只想要取得權杖來驗證使用者,則您可以指定應用程式想要用來驗證用戶的原則。 在此情況下,已更新的 /token 端點看起來會類似下列範例。

  • 當您使用 b2clogin.com 時,會是 https://<tenant-name>.b2clogin.com/<tenant-name>.onmicrosoft.com/<policy-name>/oauth2/v2.0/tokenhttps://<tenant-name>.b2clogin.com/<tenant-name>.onmicrosoft.com/oauth2/v2.0/token?p=<policy-name>

  • 當您使用自訂網域時,會是 https://login.contoso.com/<tenant-name>.onmicrosoft.com/<policy-name>/oauth2/v2.0/tokenhttps://login.contoso.com/<tenant-name>.onmicrosoft.com/oauth2/v2.0/token?p=<policy-name>

必要變更的概觀

建議您進行幾項修改,才能使用 Azure AD B2C 端點從 login.microsoftonline.com 移轉應用程式:

  • 將識別提供者應用程式中的重新導向 URL 變更為參考 b2clogin.com 或自訂網域。 如需詳細資訊,請遵循變更識別提供者重新導向 URL 指導。
  • 更新您的 Azure AD B2C 應用程式,以在其使用者流程和權杖端點參考中使用 b2clogin.com 或自訂網域。 這項變更可能包括更新您使用的驗證程式庫,例如 Microsoft 驗證程式庫 (MSAL)。
  • 更新您在 CORS 設定中針對使用者介面自訂定義的任何 [允許的來源]

變更識別提供者重新導向 URL

在您已建立應用程式的每個識別提供者網站上,將所有信任的 URL 變更為重新導向到 your-tenant-name.b2clogin.com 或自訂網域,而非 login.microsoftonline.com

您可以針對 b2clogin.com 重新導向 URL 使用兩種格式。 第一個的優點是使用租用戶識別碼 (GUID) 來取代您的租用戶網域名稱,讓 URL 中的任何位置都不會出現「Microsoft」。 請注意,authresp 端點可能不包含原則名稱。

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

第二個選項會以 your-tenant-name.onmicrosoft.com 的形式來使用您的租用戶網域名稱。 例如:

https://{your-tenant-name}.b2clogin.com/{your-tenant-name}.onmicrosoft.com/oauth2/authresp

針對這兩種格式:

  • {your-tenant-name} 取代為您的 Azure AD B2C 租用戶名稱。
  • 移除 /te (如果 URL 中有的話)。

更新您的應用程式與 API

您支援 Azure AD B2C 的應用程式與 API 中的程式碼可能會在數個地方參考 login.microsoftonline.com。 例如,您的程式碼可能會參考使用者流程與權杖端點。 更新下列內容以改為參考 your-tenant-name.b2clogin.com

  • 授權端點
  • 權杖端點
  • 權杖簽發者

例如,Contoso 註冊/登入原則的授權單位端點現在會是:

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

如需將以 OWIN 為基礎的 Web 應用程式移轉至 b2clogin.com 的相關資訊,請參閱將以 OWIN 為基礎的 Web API 移轉至 b2clogin.com

若要移轉受 Azure AD B2C 保護的 Azure API 管理 API,請參閱使用 Azure AD B2C 保護 Azure API 管理 API (部分機器翻譯) 中的移轉至 b2clogin.com (部分機器翻譯) 一節。

Microsoft Authentication Library (MSAL)

MSAL.NET ValidateAuthority 屬性

如果您使用的是 MSAL.NET (英文) v2 或更早版本,請在用戶端具現化上將 ValidateAuthority 屬性設定為 false,以允許重新導向 b2clogin.com。 如果是 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.com'] // Required if validateAuthority: true
  }
);

下一步

如需將以 OWIN 為基礎的 Web 應用程式移轉至 b2clogin.com 的相關資訊,請參閱將以 OWIN 為基礎的 Web API 移轉至 b2clogin.com (部分機器翻譯)。

若要移轉受 Azure AD B2C 保護的 Azure API 管理 API,請參閱使用 Azure AD B2C 保護 Azure API 管理 API (部分機器翻譯) 中的移轉至 b2clogin.com (部分機器翻譯) 一節。