這很重要
自 2025 年 5 月 1 日起,Azure AD B2C 將不再可供新客戶購買。 在我們的常見問題中深入瞭解。
本文介紹如何使用 Azure AD B2C 中的使用者流為來自特定 Microsoft Entra 組織的使用者啟用登錄。
開始之前,請使用此頁面頂端的 [選擇原則類型] 選取器,選擇您要設定的原則類型。 Azure Active Directory B2C 提供兩種方法來定義使用者如何與您的應用程式互動:透過預先定義的使用者流程,或透過完全可設定的自訂原則。 此文章中所需的步驟隨各方法而異。
先決條件
- 建立使用者流程,讓使用者能夠註冊並登入您的應用程式。
- 註冊 Web 應用程式。
- 完成開始使用 Active Directory B2C 中的自定義原則中的步驟。 本教學課程會引導您更新自定義原則檔案,以使用您的 Azure AD B2C 租用戶設定。
- 註冊 Web 應用程式。
驗證應用程式的發行者域
截至 2020 年 11 月,新的應用程式註冊在使用者同意提示中顯示為未經驗證,除非 應用程式的發行者域已經過驗證,並且 公司的身份已通過 Microsoft 合作夥伴網路驗證並與應用程式關聯。 (瞭解更多 有關此更改的資訊。請注意,對於 Azure AD B2C 使用者流,僅當使用 Microsoft 帳戶 或其他 Microsoft Entra 租戶作為身份提供者時,才會顯示出版者的網域。 要滿足這些新要求,請執行以下作:
- 使用 Microsoft 合作夥伴網路 (MPN) 帳戶驗證公司的身分識別。 此程序會驗證您公司和公司主要連絡人的相關資訊。
- 使用下列其中一個選項完成發行者驗證流程,將 MPN 帳戶與應用程式註冊建立關聯:
- 如果 Microsoft 帳戶身分識別提供者的應用程式註冊是在 Microsoft Entra 租用戶中,請在應用程式註冊平台中驗證您的應用程式。
- 如果 Microsoft 帳戶身分提供者的應用程式註冊位於 Azure AD B2C 租用戶中,請使用 Microsoft Graph API 將應用程式標示為已驗證發行者(例如,使用 Graph Explorer)。 Azure AD B2C 租戶目前無法使用用於設定應用程式驗證發佈者的 UI。
註冊 Microsoft Entra 應用
若要為使用來自特定 Microsoft Entra 組織的 Microsoft Entra 帳戶的使用者啟用登錄,需要在 Azure Active Directory B2C (Azure AD B2C) 中創建一個應用程式。 如需詳細資訊,請參閱使用 Microsoft 身分識別平台註冊應用程式。
登入 Azure 入口網站。
如果您有多個租戶的存取權,請選取頂端功能表中的設定圖示,從目錄 + 訂用帳戶功能表切換至Microsoft Entra ID 租戶。
在 Azure 入口網站中,搜尋並選取 [Microsoft Entra ID]。
在左側功能表中的 Manage 下,選擇 App registrations。
選取 + 新增註冊。
輸入應用程式的名稱。 例如:
Azure AD B2C App
。接受此應用程式的預設選項,即僅在這個組織目錄中的帳戶(預設目錄 - 單租戶)。
對於 重定向 URI,接受 Web 的值,然後以全小寫字母輸入以下 URL,其中
your-B2C-tenant-name
替換為 Azure AD B2C 租戶的名稱。https://your-B2C-tenant-name.b2clogin.com/your-B2C-tenant-name.onmicrosoft.com/oauth2/authresp
例如:
https://fabrikam.b2clogin.com/fabrikam.onmicrosoft.com/oauth2/authresp
。如果您使用 自訂網域,請輸入
https://your-domain-name/your-tenant-name.onmicrosoft.com/oauth2/authresp
。 將your-domain-name
取代為您的自定義網域,並將your-tenant-name
取代為您的租用戶名稱。選取 註冊。 記錄 [應用程式 (用戶端) 識別碼],以便在稍後的步驟中使用。
選擇 Certificates & secrets(證書和金鑰),然後選擇 New client secret(新建用戶端密鑰)。
輸入金鑰的 Description(描述 ),選擇過期時間,然後選擇 Add(添加)。 記錄金鑰的 Value 以供後續步驟使用。
將 Microsoft Entra ID 配置為標識提供者
如果您有多個租用戶的存取權,請使用頂端功能表中的 [設定] 圖示,從 [目錄 + 訂用帳戶] 功能表切換至您的 Azure AD B2C 租用戶。
選擇 Azure 入口網站左上角 的 [所有服務 ],然後搜尋並選取 [Azure AD B2C]。
選取 [識別提供者],然後選取 [新增 OpenID Connect 提供者]。
輸入名稱。 例如,輸入 Contoso Microsoft Entra ID。
對於 Metadata url,請輸入以下 URL,將
{tenant}
替換為您的 Microsoft Entra 租戶的網域名稱。https://login.microsoftonline.com/{tenant}/v2.0/.well-known/openid-configuration
例如: https://login.microsoftonline.com/contoso.onmicrosoft.com/v2.0/.well-known/openid-configuration
。 如果您使用自定義域,請將contoso.com
替換為您在https://login.microsoftonline.com/contoso.com/v2.0/.well-known/openid-configuration
中的自定義域。
針對 用戶端識別碼,輸入您先前記錄的應用程式識別碼。
對於 Client secret (用戶端金鑰),輸入您之前記錄的用戶端密鑰值。
針對 [範圍],輸入
openid profile
。保留 [回應類型] 和 [ 回應模式] 的預設值。
(選擇性)針對 [ 網域提示],輸入
contoso.com
。 如需詳細資訊,請參閱 使用 Azure Active Directory B2C 設定直接登入。在 [ 識別提供者宣告對應] 底下,選取下列宣告:
- 使用者ID: oid
- 顯示名稱: 名稱
- 指定名稱: given_name
- 姓氏: family_name
- 電子郵件: 電子郵件
選取 [儲存]。
將 Microsoft Entra 標識提供者添加到使用者流
此時,Microsoft Entra 身份提供者已設置,但尚未在任何登入頁面中可用。 若要將 Microsoft Entra 標識提供者添加到使用者流,請執行以下作:
- 在您的 Azure AD B2C 租戶中,選取 使用者流程。
- 點擊要新增 Microsoft Entra 身分提供者的使用者流程。
- 在 Settings (設置) 下,選擇 Identity providers (身份供應商)
- 在 「自定義標識提供者」 下,選擇 「Contoso Microsoft Entra ID」。。
- 選取 [儲存]。
- 若要測試您的原則,請選取 [ 執行使用者流程]。
- 針對 [應用程式],選取您 先前註冊的 Web 應用程式。
Reply URL 應顯示
https://jwt.ms
。 - 選取 [ 執行使用者流程 ] 按鈕。
- 在註冊或登錄頁中,選擇“ Contoso Microsoft Entra ID ”以使用 Microsoft Entra Contoso 帳戶登錄。
如果登入程式成功,您的瀏覽器會重新導向至 https://jwt.ms
,以顯示 Azure AD B2C 所傳回令牌的內容。
建立原則金鑰
您需要將建立的應用程式金鑰存儲在 Azure AD B2C 租戶中。
- 如果您有多個租用戶的存取權,請使用頂端功能表中的 [設定] 圖示,從 [目錄 + 訂用帳戶] 功能表切換至您的 Azure AD B2C 租用戶。
- 選擇 Azure 入口網站左上角 的 [所有服務 ],然後搜尋並選取 [Azure AD B2C]。
- 在 [ 原則] 底下,選取 [ 身分識別體驗架構]。
- 選取 [原則密鑰 ],然後選取 [ 新增]。
- 針對 [選項],選擇
Manual
。 - 輸入政策金鑰的名稱。 例如:
ContosoAppSecret
。 創建金鑰時,前綴B2C_1A_
會自動添加到金鑰名稱中,因此它在以下部分的 XML 中的引用是 B2C_1A_ContosoAppSecret。 - 在 Secret (機密) 中,輸入您之前記錄的用戶端金鑰值。
- 針對 [ 金鑰使用方式],選取
Signature
。 - 選取 ,創建。
將 Microsoft Entra ID 配置為標識提供者
若要使用戶能夠使用 Microsoft Entra 帳戶登錄,需要將 Microsoft Entra ID 定義為 Azure AD B2C 可以通過終結點與之通信的聲明提供者。 端點提供一組宣告,供 Azure AD B2C 用來驗證特定使用者已驗證。
通過將 Microsoft Entra ID 添加到策略擴展檔中的 ClaimsProvider 元素,可以將 Microsoft Entra ID 定義為聲明提供者。
開啟 TrustFrameworkExtensions.xml 檔案。
尋找 ClaimsProviders 元素。 如果不存在,請在根元素底下新增它。
新增 ClaimsProvider ,如下所示:
<ClaimsProvider> <Domain>Contoso</Domain> <DisplayName>Login using Contoso</DisplayName> <TechnicalProfiles> <TechnicalProfile Id="AADContoso-OpenIdConnect"> <DisplayName>Contoso Employee</DisplayName> <Description>Login with your Contoso account</Description> <Protocol Name="OpenIdConnect"/> <Metadata> <Item Key="METADATA">https://login.microsoftonline.com/tenant-name.onmicrosoft.com/v2.0/.well-known/openid-configuration</Item> <Item Key="client_id">00001111-aaaa-2222-bbbb-3333cccc4444</Item> <Item Key="response_types">code</Item> <Item Key="scope">openid profile</Item> <Item Key="response_mode">form_post</Item> <Item Key="HttpBinding">POST</Item> <Item Key="UsePolicyInRedirectUri">false</Item> </Metadata> <CryptographicKeys> <Key Id="client_secret" StorageReferenceId="B2C_1A_ContosoAppSecret"/> </CryptographicKeys> <OutputClaims> <OutputClaim ClaimTypeReferenceId="issuerUserId" PartnerClaimType="oid"/> <OutputClaim ClaimTypeReferenceId="tenantId" PartnerClaimType="tid"/> <OutputClaim ClaimTypeReferenceId="givenName" PartnerClaimType="given_name" /> <OutputClaim ClaimTypeReferenceId="surName" PartnerClaimType="family_name" /> <OutputClaim ClaimTypeReferenceId="displayName" PartnerClaimType="name" /> <OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="socialIdpAuthentication" AlwaysUseDefaultValue="true" /> <OutputClaim ClaimTypeReferenceId="identityProvider" PartnerClaimType="iss" /> </OutputClaims> <OutputClaimsTransformations> <OutputClaimsTransformation ReferenceId="CreateRandomUPNUserName"/> <OutputClaimsTransformation ReferenceId="CreateUserPrincipalName"/> <OutputClaimsTransformation ReferenceId="CreateAlternativeSecurityId"/> <OutputClaimsTransformation ReferenceId="CreateSubjectClaimFromAlternativeSecurityId"/> </OutputClaimsTransformations> <UseTechnicalProfileForSessionManagement ReferenceId="SM-SocialLogin"/> </TechnicalProfile> </TechnicalProfiles> </ClaimsProvider>
在 ClaimsProvider 元素下,將 Domain 的值更新為可用於將其與其他標識提供者區分開來的唯一值。 例如
Contoso
。 不要在此域設置的末尾放置 a.com
。在 ClaimsProvider 元素下,將 DisplayName 的值更新為聲明提供程式的友好名稱。 目前未使用此值。
更新技術設定檔案
若要從 Microsoft Entra 終結點獲取令牌,需要定義 Azure AD B2C 在與 Microsoft Entra ID 通信時應使用的協定。 這是在 ClaimsProvider 的 TechnicalProfile 元素中完成的。
- 更新 TechnicalProfile 元素的ID。 此 ID 用於從策略的其他部份參考此技術設定檔,例如
AADContoso-OpenIdConnect
。 - 更新 DisplayName 的值。 此值將顯示在登錄螢幕上的登錄按鈕上。
- 更新 Description (描述) 的值。
- Microsoft Entra ID 使用 OpenID Connect 協定,因此請確保 Protocol (協定 ) 的
OpenIdConnect
值為 . - 將 METADATA 的值設置為
https://login.microsoftonline.com/tenant-name.onmicrosoft.com/v2.0/.well-known/openid-configuration
,其中tenant-name
是 Microsoft Entra 租戶名稱。 例如,https://login.microsoftonline.com/contoso.onmicrosoft.com/v2.0/.well-known/openid-configuration
- 將 client_id 設定為應用程式註冊中的應用程式識別碼。
- 在 CryptographicKeys 下,將 StorageReferenceId 的值更新為您之前創建的策略密鑰的名稱。 例如:
B2C_1A_ContosoAppSecret
。
新增使用者旅程圖
此時,身份提供者已設定,但尚未在任何登入頁面中可用。 如果您沒有自己的自定義使用者旅程圖,請建立現有範本使用者旅程圖的重複項目,否則請繼續進行下一個步驟。
- 從入門套件開啟 TrustFrameworkBase.xml 檔案。
- 尋找並複製包含 之
Id="SignUpOrSignIn"
元素的整個內容。 - 開啟 TrustFrameworkExtensions.xml 並尋找 UserJourneys 元素。 如果元素不存在,新增一個。
- 貼上您複製的 UserJourney 元素作為 UserJourneys 元素子元素的整個內容。
- 重新命名使用者旅程的識別碼。 例如:
Id="CustomSignUpSignIn"
。
將識別提供者新增至使用者旅程圖
現在您已擁有使用者旅程圖,請將新的識別提供者新增至使用者旅程圖。 您必須先新增登入按鈕,然後將按鈕連結至動作。 動作項目是您稍早建立的技術配置檔。
尋找使用者旅程中包含
Type="CombinedSignInAndSignUp"
或Type="ClaimsProviderSelection"
的協調流程步驟元素。 通常是第一個編排流程步驟。 ClaimsProviderSelections 元素包含使用者可以登入的識別提供者清單。 元素的順序會控制向用戶呈現的登入按鈕順序。 新增 ClaimsProviderSelection XML 元素。 將 TargetClaimsExchangeId 的值設定為易記名稱。在下一個協調流程步驟中,新增 ClaimsExchange 元素。 將標識碼設定為目標宣告交換的標識碼值。更新TechnicalProfileReferenceId的值為您稍早建立的技術配置檔之標識碼。
下列 XML 示範使用者旅程圖的前兩個協調流程步驟與識別提供者:
<OrchestrationStep Order="1" Type="CombinedSignInAndSignUp" ContentDefinitionReferenceId="api.signuporsignin">
<ClaimsProviderSelections>
...
<ClaimsProviderSelection TargetClaimsExchangeId="AzureADContosoExchange" />
</ClaimsProviderSelections>
...
</OrchestrationStep>
<OrchestrationStep Order="2" Type="ClaimsExchange">
...
<ClaimsExchanges>
<ClaimsExchange Id="AzureADContosoExchange" TechnicalProfileReferenceId="AADContoso-OpenIdConnect" />
</ClaimsExchanges>
</OrchestrationStep>
設定信賴憑證者原則
例如 SignUpSignIn.xml 的信賴方政策,指定 Azure AD B2C 將執行的使用者流程。 尋找信賴憑證者內的DefaultUserJourney元素。 更新 ReferenceId 以符合您新增識別提供者的使用者旅程圖標識碼。
在下列範例中 CustomSignUpSignIn
,針對使用者旅程圖, ReferenceId 會設定為 CustomSignUpSignIn
:
<RelyingParty>
<DefaultUserJourney ReferenceId="CustomSignUpSignIn" />
...
</RelyingParty>
上傳自定義原則
- 登入 Azure 入口網站。
- 在入口網站工具列中選取 [目錄 + 訂 用帳戶] 圖示,然後選取包含 Azure AD B2C 租使用者的目錄。
- 在 Azure 入口網站中,搜尋並選取 [Azure AD B2C]。
- 在 [ 原則] 底下,選取 [ 身分識別體驗架構]。
- 選取 [上傳自定義原則],然後上傳您變更的兩個原則檔案,順序如下:擴充原則,例如
TrustFrameworkExtensions.xml
,然後是信賴憑證者原則,例如SignUpSignIn.xml
。
測試您的自定義原則
- 選取您的受信方政策,例如
B2C_1A_signup_signin
。 - 針對 [應用程式],選取您 先前註冊的 Web 應用程式。
Reply URL 應顯示
https://jwt.ms
。 - 選取 [ 立即執行] 按鈕。
- 在註冊或登錄頁中,選擇“ Contoso 員工 ”以使用 Microsoft Entra Contoso 帳戶登錄。
如果登入程式成功,您的瀏覽器會重新導向至 https://jwt.ms
,以顯示 Azure AD B2C 所傳回令牌的內容。
[可選]配置可選聲明
如果要從 Microsoft Entra ID 獲取 family_name
and given_name
聲明,可以在 Azure 門戶 UI 或應用程式清單中為應用程式設定可選聲明。 有關詳細資訊,請參閱 如何向 Microsoft Entra 應用提供可選聲明。
- 使用組織的 Microsoft Entra 租戶登入Azure 門戶。 或者,如果已登入,請確保您使用的目錄包含您的組織的 Microsoft Entra 租戶(例如 Contoso):
- 選取入口網站工具列中的 [目錄 + 訂用帳戶] 圖示。
- 在入口網站設定 | 目錄 + 訂用帳戶頁面中,尋找您的 Microsoft Entra 目錄在目錄名稱列表中,然後選取切換。
- 在 Azure 入口網站中,搜尋並選取 [Microsoft Entra ID]。
- 在左側功能表中的 Manage 下,選擇 App registrations。
- 在清單中選擇要為其設定可選聲明的應用程式,例如
Azure AD B2C App
. - 從 Manage 部分中,選擇 Token configuration。
- 選擇 新增選擇性的聲明。
- 對於 Token type (令牌類型),選擇 ID 。
- 選擇要新增的可選聲明,
family_name
然後given_name
. - 選取 ,然後新增。 如果出現啟用 Microsoft Graph 個人資料許可權(令牌中顯示聲明所需),請啟用它,然後再次選擇Add。
[可選]驗證您的應用真實性
發行者驗證 可説明您的使用者瞭解您 註冊的應用程式的真實性。 已驗證的應用意味著應用的發行者已使用其 Microsoft 合作夥伴網路 (MPN) 驗證 了其身份。 請了解如何將應用程式標示為發行者已完成驗證。