這很重要
自 2025 年 5 月 1 日起,Azure AD B2C 將不再可供新客戶購買。 在我們的常見問題中深入瞭解。
當您在 Azure Active Directory B2C (Azure AD B2C) 應用程式中設定註冊和登入的識別提供者時,您必須指定 Azure AD B2C 識別提供者的端點。 您不應該再參考應用程式和 API 中的 login.microsoftonline.com ,以便向 Azure AD B2C 驗證使用者。 請改用 b2clogin.com 或 所有應用程式的自定義網域 。
此變更適用於哪些端點
轉換至 b2clogin.com 僅適用於使用 Azure AD B2C 原則(使用者流程或自定義原則)來驗證使用者的驗證端點。 這些端點具有 <policy-name>
參數,指定 Azure AD B2C 應使用的原則。
深入瞭解 Azure AD B2C 原則。
舊端點看起來可能像這樣:
-
https://login.microsoft.com/<tenant-name>.onmicrosoft.com/<policy-name>/oauth2/v2.0/authorize
或https://login.microsoft.com/<tenant-name>.onmicrosoft.com/oauth2/v2.0/authorize?p=<policy-name>
適用於/authorize
端點。 -
https://login.microsoft.com/<tenant-name>.onmicrosoft.com/<policy-name>/oauth2/v2.0/logout
或https://login.microsoft.com/<tenant-name>.onmicrosoft.com/oauth2/v2.0/logout?p=<policy-name>
適用於/logout
端點。
對應的更新端點看起來會類似下列端點:
-
https://<tenant-name>.b2clogin.com/<tenant-name>.onmicrosoft.com/<policy-name>/oauth2/v2.0/authorize
或https://<tenant-name>.b2clogin.com/<tenant-name>.onmicrosoft.com/oauth2/v2.0/authorize?p=<policy-name>
的/authorize
端點。 -
https://<tenant-name>.b2clogin.com/<tenant-name>.onmicrosoft.com/<policy-name>/oauth2/v2.0/logout
或https://<tenant-name>.b2clogin.com/<tenant-name>.onmicrosoft.com/oauth2/v2.0/logout?p=<policy-name>
的/logout
端點。
使用 Azure AD B2C 自定義網域 時,對應的更新端點看起來會類似下列端點。 您可以使用下列任一端點:
-
https://login.contoso.com/<tenant-name>.onmicrosoft.com/<policy-name>/oauth2/v2.0/authorize
或https://login.contoso.com/<tenant-name>.onmicrosoft.com/oauth2/v2.0/authorize?p=<policy-name>
的/authorize
端點。 -
https://login.contoso.com/<tenant-name>.onmicrosoft.com/<policy-name>/oauth2/v2.0/logout
或https://login.contoso.com/<tenant-name>.onmicrosoft.com/oauth2/v2.0/logout?p=<policy-name>
的/logout
端點。
未受影響的端點
有些客戶會使用 Microsoft Entra 企業租用戶的共用功能。 例如,取得存取令牌以呼叫 Azure AD B2C 租使用者的 MS Graph API 。
這項變更不會影響 URL 中未包含原則參數的所有端點。 它們只會使用Microsoft Entra ID 的 login.microsoftonline.com 端點來存取,且無法與 b2clogin.com 或自定義網域搭配使用。 下列範例顯示Microsoft身分識別平臺的有效令牌端點:
https://login.microsoftonline.com/<tenant-name>.onmicrosoft.com/oauth2/v2.0/token
不過,如果您只想要取得令牌來驗證使用者,則可以指定應用程式想要用來驗證用戶的原則。 在此情況下,更新 /token
的端點看起來會類似下列範例。
https://<tenant-name>.b2clogin.com/<tenant-name>.onmicrosoft.com/<policy-name>/oauth2/v2.0/token
或https://<tenant-name>.b2clogin.com/<tenant-name>.onmicrosoft.com/oauth2/v2.0/token?p=<policy-name>
當您使用 b2clogin.com 時。https://login.contoso.com/<tenant-name>.onmicrosoft.com/<policy-name>/oauth2/v2.0/token
或https://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 使用兩種格式。 第一個優點是,在URL的任何地方都不會看到「Microsoft」,因為使用租戶ID(GUID)取代您的租戶網域名稱。 請注意, 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 租用戶名稱。 - 如果 URL 中存在,請將其移除
/te
。
更新您的應用程式和 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驗證連結庫 (MSAL)
MSAL.NET ValidateAuthority 屬性
如果您使用 MSAL.NET v2 或更早版本,請將 Client 具現化上的 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**
適用於 JavaScript validateAuthority 屬性的 MSAL
如果您使用 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」一節。