在 Azure Active Directory B2C 中設定特定 Microsoft Entra 組織的登入
本文說明如何使用 Azure AD B2C 中的使用者流程,為來自特定 Microsoft Entra 組織的使用者啟用登入。
開始 之前,請使用 [選擇原則類型 選取器] 來選擇您要設定的原則類型。 Azure Active Directory B2C 提供兩種方法來定義使用者如何與您的應用程式互動:透過預先 定義的使用者流程 ,或透過完全可設定 的自訂原則 。 本文中每個方法所需的步驟都不同。
必要條件
- 建立使用者流程 ,讓使用者可以註冊並登入您的應用程式。
- 註冊 Web 應用程式 。
- 完成開始使用 Active Directory 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 總管 )。 目前已針對 Azure AD B2C 租使用者停用設定應用程式已驗證發行者的 UI。
註冊 Microsoft Entra 應用程式
若要為具有來自特定 Microsoft Entra 組織的 Microsoft Entra 帳戶的使用者啟用登入,請在 Azure Active Directory B2C (Azure AD B2C)中,在Azure 入口網站 中 建立應用程式。 如需詳細資訊,請參閱 向 Microsoft 身分識別平臺 註冊應用程式。
登入 Azure 入口網站。
如果您有多個租使用者的存取權,請選取 頂端功能表中的設定 圖示,以從 [目錄 + 訂 用帳戶] 功能表切換至您的 Microsoft Entra ID 租使用者。
在Azure 入口網站中,搜尋並選取 [Microsoft Entra ID ]。
在左側功能表中的 [管理] 底下 ,選取 [應用程式註冊 ]。
選取 + 新增註冊。
輸入應用程式的 [ 名稱 ]。 例如:
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-tenant-name
您的租使用者名稱取代your-domain-name
。選取註冊。 記錄應用程式 (用戶端) 識別碼 ,以供後續步驟使用。
選取 [ 憑證 & 密碼 ],然後選取 [ 新增用戶端密碼 ]。
輸入密碼的描述 ,選取到期日,然後選取 [ 新增 ]。 記錄秘密的值 ,以供後續步驟使用。
將 Microsoft Entra 識別碼設定為識別提供者
如果您有多個租使用者的存取權,請選取 頂端功能表中的 [設定 ] 圖示,從 [目錄 + 訂 用帳戶] 功能表切換至您的 Azure AD B2C 租使用者。
選擇 Azure 入口網站左上角的 [所有服務 ],然後搜尋並選取 [Azure AD B2C ]。
選取 [ 識別提供者 ],然後選取 [ 新增 OpenID 連線提供者 ]。
輸入名稱。 例如,輸入 Contoso Microsoft Entra ID 。
針對 [中繼資料 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
自訂網域。
針對 [ 用戶端識別碼 ],輸入您先前記錄的應用程式識別碼。
針對 [用戶端密碼 ],輸入您先前記錄的用戶端密碼值。
針對 [ 範圍 ],輸入
openid profile
。保留 [回應類型 ] 和 [回應模式 ] 的 預設值。
(選擇性)針對 [ 網域提示 ],輸入
contoso.com
。 如需詳細資訊,請參閱 使用 Azure Active Directory B2C 設定直接登入。在 [識別提供者宣告對應 ] 底 下,選取下列宣告:
- 使用者識別碼 : oid
- 顯示名稱: 名稱
- 指定名稱 : given_name
- 姓氏 : family_name
- 電子郵件 : 電子郵件
選取 [儲存]。
將 Microsoft Entra 識別提供者新增至使用者流程
此時,Microsoft Entra 識別提供者已設定,但尚未在任何登入頁面中提供。 若要將 Microsoft Entra 識別提供者新增至使用者流程:
- 在您的 Azure AD B2C 租使用者中,選取 [ 使用者流程 ]。
- 按一下您想要新增 Microsoft Entra 識別提供者的使用者流程。
- 在 [設定 ] 下 ,選取 [ 識別提供者]
- 在 [自訂識別提供者 ] 下 ,選取 [Contoso Microsoft Entra ID ]。
- 選取 [儲存]。
- 若要測試您的原則,請選取 [ 執行使用者流程 ]。
- 針對 [ 應用程式 ],選取您 先前註冊的 Web 應用程式。 回復 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 。 - 在 [秘密 ] 中 ,輸入您稍早記錄的用戶端密碼值。
- 針對 [ 金鑰使用方式 ],選取
Signature
。 - 選取建立。
將 Microsoft Entra 識別碼設定為識別提供者
若要讓使用者使用 Microsoft Entra 帳戶登入,您必須將 Microsoft Entra 識別碼定義為 Azure AD B2C 可以透過端點通訊的宣告提供者。 端點提供一組宣告,供 Azure AD B2C 用來驗證特定使用者已驗證。
您可以將 Microsoft Entra ID 新增至 原則延伸檔案中的 ClaimsProvider 元素,將 Microsoft Entra 識別碼定義為宣告提供者。
開啟 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">00000000-0000-0000-0000-000000000000</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
。 您不會在此網域設定的結尾放置.com
。在 ClaimsProvider 元素下,將 DisplayName 的值 更新為宣告提供者的易記名稱。 目前未使用此值。
更新技術設定檔
若要從 Microsoft Entra 端點取得權杖,您必須定義 Azure AD B2C 應該用來與 Microsoft Entra 識別碼通訊的通訊協定。 這會在 ClaimsProvider 的 TechnicalProfile 元素內 完成。
- 更新 TechnicalProfile 元素的 識別碼。 此識別碼可用來從原則的其他部分參考此技術設定檔,例如
AADContoso-OpenIdConnect
。 - 更新 DisplayName 的值 。 此值會顯示在登入畫面上的 [登入] 按鈕上。
- 更新 Description 的值。
- Microsoft Entra ID 會使用 OpenID 連線 通訊協定,因此請確定 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 下,將 儲存體 ReferenceId 的值更新為您稍早建立的原則密鑰名稱。 例如:
B2C_1A_ContosoAppSecret
。
新增使用者旅程圖
此時,識別提供者已設定,但尚未在任何登入頁面中提供。 如果您沒有自己的自定義使用者旅程圖,請建立現有範本使用者旅程圖的重複項目,否則請繼續進行下一個步驟。
- 從入門套件開啟 TrustFrameworkBase.xml 檔案。
- 尋找並複製包含
Id="SignUpOrSignIn"
之 UserJourney 元素的整個內容。 - 開啟 TrustFrameworkExtensions.xml 並尋找 UserJourneys 元素。 如果專案不存在,請新增一個。
- 貼上您複製為 UserJourneys 元素子系之 UserJourney 元素的整個內容。
- 重新命名使用者旅程圖的標識碼。 例如:
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 應用程式。 回覆 URL 應該會顯示
https://jwt.ms
。 - 選取 [ 立即 執行] 按鈕。
- 從 [註冊或登入] 頁面中,選取 [Contoso Employee ] 以使用 Microsoft Entra Contoso 帳戶登入。
如果登入程式成功,您的瀏覽器會重新導向至 https://jwt.ms
,以顯示 Azure AD B2C 所傳回令牌的內容。
[選擇性]設定選擇性宣告
如果您想要從 Microsoft Entra ID 取得 family_name
和 given_name
宣告,您可以在 Azure 入口網站 UI 或應用程式指令清單中設定應用程式的選擇性宣告。 如需詳細資訊,請參閱 如何為 Microsoft Entra 應用程式提供選擇性宣告。
- 使用組織 Microsoft Entra 租使用者登入 Azure 入口網站。 或者,如果您已經登入,請確定您使用的是包含組織 Microsoft Entra 租使用者的目錄(例如 Contoso):
- 在入口網站工具列中選取 [ 目錄 + 訂用帳戶 ] 圖示。
- 在入口 網站設定 |[目錄 + 訂 用帳戶] 頁面,在 [ 目錄名稱 ] 列表中尋找您的 Microsoft Entra 目錄,然後選取 [ 切換]。
- 在 Azure 入口網站 中,搜尋並選取 [Microsoft Entra ID]。
- 在左側功能表中的 [管理] 底下,選取 [應用程式註冊]。
- 選取您要在清單中設定選擇性宣告的應用程式,例如
Azure AD B2C App
。 - 從 [管理] 區段中,選取 [令牌設定]。
- 選取 [ 新增選擇性宣告]。
- 針對 [ 令牌類型],選取 [ 標識符]。
- 選取要新增的選擇性宣告,
family_name
以及given_name
。 - 選取新增。 如果 開啟 Microsoft Graph 配置檔許可權(令牌中出現宣告所需的許可權), 請啟用它,然後再次選取 [ 新增 ]。
[選擇性]確認您的應用程式真實性
發行者驗證 可協助用戶瞭解您 註冊之應用程式的真實性。 已驗證的應用程式表示應用程式的發行者已 使用其 Microsoft 合作夥伴網路 (MPN) 來驗證 其身分識別。 請了解如何將應用程式標示為發行者已完成驗證。