教學課程:在 Azure Active Directory B2C 中建立使用者流程和自定義原則
開始之前,請使用 [選擇原則類型 選取器] 來選擇您要設定的原則類型。 Azure Active Directory B2C 提供兩種方法來定義使用者如何與您的應用程式互動:透過預先 定義的使用者流程 ,或透過完全可設定 的自定義原則。 本文中每個方法所需的步驟都不同。
在您的應用程式中,您可能有使用者流程可讓用戶註冊、登入或管理其配置檔。 您可以在 Azure Active Directory B2C (Azure AD B2C) 租使用者中建立不同類型的多個使用者流程,並視需要在應用程式中使用這些流程。 使用者流程可以跨應用程式重複使用。
當使用者執行登入、註冊、編輯配置檔或重設密碼等動作時,使用者流程可讓您判斷使用者與應用程式互動的方式。 在本文中,您將學會如何:
自定義原則 是定義 Azure Active Directory B2C(Azure AD B2C) 租使用者行為的組態檔。 在本文中,您將學會如何:
- 建立註冊和登入使用者流程
- 啟用自助式密碼重設
- 建立配置檔編輯使用者流程
重要
我們已變更參考使用者流程版本的方式。 先前,我們提供了 V1(生產就緒)版本,以及 V1.1 和 V2 (預覽) 版本。 現在,我們已將使用者流程合併成兩個版本: 具有最新功能的建議 使用者流程,以及 標準 (舊版) 使用者流程。 所有舊版預覽使用者流程 (V1.1 和 V2) 都已被取代。 如需詳細資訊,請參閱 Azure AD B2C 中的使用者流程版本。 這些變更僅適用於 Azure 公用雲端。 其他環境會繼續使用 舊版使用者流程版本控制。
必要條件
- 如果您還沒有 Azure AD B2C 租使用者, 請建立連結至 Azure 訂用帳戶的 Azure AD B2C 租 使用者。
- 註冊 Web 應用程式,並 啟用標識碼令牌隱含授與。
- 如果您還沒有 Azure AD B2C 租使用者, 請建立連結至 Azure 訂用帳戶的 Azure AD B2C 租 使用者。
- 註冊 Web 應用程式,並 啟用標識碼令牌隱含授與。
建立註冊和登入使用者流程
註冊和登入使用者流程會以單一組態處理註冊和登入體驗。 應用程式的用戶會根據內容引導到正確的路徑。
登入 Azure 入口網站。
如果您有多個租使用者的存取權,請選取頂端功能表中的 [設定] 圖示,從 [目錄 + 訂用帳戶] 功能表切換至您的 Azure AD B2C 租使用者。
在 Azure 入口網站中,搜尋並選取 [Azure AD B2C]。
在 [原則] 下,選取 [使用者流程],然後選取 [新增使用者流程]。
在 [建立使用者流程] 頁面上,選取 [註冊和登入] 使用者流程。
在 [選取版本] 下,選取 [建議],然後選取 [建立]。 (深入了解 使用者流程版本。)
輸入 使用者流程的 [名稱 ]。 例如, signupsignin1。
針對 [ 識別提供者],選取 [ 電子郵件註冊]。
針對 [用戶屬性] 和 [令牌宣告],選擇您想要在註冊期間從使用者收集並傳送的宣告和屬性。 例如,選取 [顯示更多],然後選擇 [國家/地區]、[顯示名稱] 和 [郵遞區號] 的屬性和宣告。 選取 [確定]。
選取 [建立],以新增使用者流程。 B2C_1_前置詞會自動加上名稱。
測試使用者流程
選取您建立的使用者流程,以開啟其概觀頁面。
在使用者流程概觀頁面頂端,選取 [ 執行使用者流程]。 窗格隨即在頁面右側開啟。
針對 [ 應用程式],選取您想要測試的 Web 應用程式,例如名為 webapp1 的 Web 應用程式。 回覆 URL 應該會顯示
https://jwt.ms
。選取 [ 執行使用者流程],然後選取 [ 立即註冊]。
輸入有效的電子郵件地址,選取 [ 傳送驗證碼],輸入您收到的驗證碼,然後選取 [ 驗證碼]。
輸入新的密碼並確認密碼。
選取您的國家/地區、輸入您想要顯示的名稱、輸入郵遞郵遞區編碼,然後選取 [ 建立]。 令牌會傳回 ,
https://jwt.ms
而且應該會顯示給您。您現在可以再次執行使用者流程,而且應該能夠使用您所建立的帳戶登入。 傳回的令牌包含您選取的國家/地區、名稱和郵遞區編碼的宣告。
注意
「執行使用者流程」體驗目前與使用授權碼流程的 SPA 回復 URL 類型不相容。 若要使用這些類型的應用程式使用「執行使用者流程」體驗,請註冊類型為 「Web」 的回復 URL,並啟用隱含流程,如這裡所述。
啟用自助式密碼重設
若要啟用 註冊或登入使用者流程的自助式密碼重 設:
- 選取您建立的註冊或登入使用者流程。
- 在左側功能表中的 [設定] 下,選取 [屬性]。
- 在 [密碼設定] 底下,選取 [自助式密碼重設]。
- 選取 [儲存]。
測試使用者流程
- 選取您建立的使用者流程以開啟其概觀頁面,然後選取 [ 執行使用者流程]。
- 針對 [ 應用程式],選取您想要測試的 Web 應用程式,例如名為 webapp1 的 Web 應用程式。 回覆 URL 應該會顯示
https://jwt.ms
。 - 選取執行使用者流程。
- 從 [註冊或登入] 頁面中,選取 [ 忘記密碼?]。
- 確認您先前建立之帳戶的電子郵件地址,然後選取 [ 繼續]。
- 您現在有機會變更使用者的密碼。 變更密碼,然後選取 [ 繼續]。 令牌會傳回 ,
https://jwt.ms
而且應該會顯示給您。
建立配置檔編輯使用者流程
如果您想要讓使用者在應用程式中編輯其配置檔,請使用設定檔編輯使用者流程。
- 在 Azure AD B2C 租使用者概觀頁面的功能表中,選取 [使用者流程],然後選取 [ 新增使用者流程]。
- 在 [ 建立使用者流程 ] 頁面上,選取 [配置文件編輯 使用者流程]。
- 在 [選取版本] 下,選取 [建議],然後選取 [建立]。
- 輸入 使用者流程的 [名稱 ]。 例如, 配置檔編輯1。
- 針對 [識別提供者],在 [本機帳戶] 底下,選取 [電子郵件註冊]。
- 針對 [ 使用者屬性],選擇您希望客戶能夠在其配置檔中編輯的屬性。 例如,選取 [顯示更多],然後選擇 [顯示名稱] 和 [職稱] 的屬性和宣告。 選取 [確定]。
- 選取 [建立],以新增使用者流程。 B2C_1_前置詞會自動附加至名稱。
測試使用者流程
- 選取您建立的使用者流程,以開啟其概觀頁面。
- 在使用者流程概觀頁面頂端,選取 [ 執行使用者流程]。 窗格隨即在頁面右側開啟。
- 針對 [ 應用程式],選取您想要測試的 Web 應用程式,例如名為 webapp1 的 Web 應用程式。 回覆 URL 應該會顯示
https://jwt.ms
。 - 選取 [ 執行使用者流程],然後使用您先前建立的帳戶登入。
- 您現在有機會變更使用者的顯示名稱和職稱。 選取 [繼續]。 令牌會傳回 ,
https://jwt.ms
而且應該會顯示給您。
提示
本文說明如何手動設定租使用者。 您可以從本文將整個程序自動化。 自動化會部署 Azure AD B2C SocialAndLocalAccountsWithMFA 入門套件,以提供註冊和登入、密碼重設和配置檔編輯旅程。 若要自動化下列逐步解說,請流覽 IEF 安裝程式應用程式 ,並遵循指示。
新增 Identity Experience Framework 應用程式的簽署和加密密鑰
- 登入 Azure 入口網站。
- 如果您有多個租使用者的存取權,請選取頂端功能表中的 [設定] 圖示,以從 [目錄 + 訂用帳戶] 功能表切換至您的 Azure AD B2C 租使用者。
- 在 Azure 入口網站中,搜尋並選取 [Azure AD B2C]。
- 在 [概觀] 頁面的 [原則] 底下,選取 [身分識別體驗架構]。
建立簽署金鑰
- 選取 [ 原則密鑰 ],然後選取 [ 新增]。
- 針對 [ 選項],選擇
Generate
。 - 在 [ 名稱] 中, 輸入
TokenSigningKeyContainer
。 可能會自動新增前置詞B2C_1A_
。 - 針對 [ 金鑰類型],選取 [ RSA]。
- 針對 [ 金鑰使用方式],選取 [ 簽章]。
- 選取建立。
建立加密金鑰
- 選取 [ 原則密鑰 ],然後選取 [ 新增]。
- 針對 [ 選項],選擇
Generate
。 - 在 [ 名稱] 中, 輸入
TokenEncryptionKeyContainer
。 可能會自動新增前置詞B2C_1A
_。 - 針對 [ 金鑰類型],選取 [ RSA]。
- 針對 [ 金鑰使用方式],選取 [ 加密]。
- 選取建立。
註冊身分識別體驗架構應用程式
Azure AD B2C 會要求您註冊兩個應用程式,以使用本機帳戶註冊和登入使用者:IdentityExperienceFramework、Web API 和 ProxyIdentityExperienceFramework,這是具有 IdentityExperienceFramework 應用程式委派許可權的原生應用程式。 您的使用者可以註冊電子郵件地址或使用者名稱和密碼,以存取租用戶註冊的應用程式,這會建立「本機帳戶」。本機帳戶只存在於您的 Azure AD B2C 租使用者中。
您只需要在 Azure AD B2C 租用戶中註冊這兩個應用程式一次。
註冊 IdentityExperienceFramework 應用程式
若要在 Azure AD B2C 租用戶中註冊應用程式,您可以使用 應用程式註冊 體驗。
- 選取 [應用程式註冊],然後選取 [新增註冊]。
- 對於名稱,輸入
IdentityExperienceFramework
。 - 在 [支援的帳戶類型] 底下,選取 [僅在此組織目錄中的帳戶]。
- 在 [重新導向 URI] 下,選取 [Web],然後輸入
https://your-tenant-name.b2clogin.com/your-tenant-name.onmicrosoft.com
,其中your-tenant-name
是您的 Azure AD B2C 租使用者功能變數名稱。 - 在 [許可權] 底下,選取 [授與系統管理員同意以開啟標識符和offline_access許可權] 複選框。
- 選取註冊。
- 記錄應用程式 (用戶端) 識別碼,以供後續步驟使用。
接下來,藉由新增範圍來公開 API:
- 在左側功能表中的 [管理] 底下,選取 [公開 API]。
- 選取 [新增範圍],然後選取 [ 儲存並繼續 接受默認應用程式標識碼 URI]。
- 輸入下列值來建立範圍,以允許在 Azure AD B2C 租使用者中執行自定義原則:
- 範圍名稱:
user_impersonation
- 管理員 同意顯示名稱:
Access IdentityExperienceFramework
- 管理員 同意描述:
Allow the application to access IdentityExperienceFramework on behalf of the signed-in user.
- 範圍名稱:
- 選取 [新增範圍]
註冊 ProxyIdentityExperienceFramework 應用程式
- 選取 [應用程式註冊],然後選取 [新增註冊]。
- 對於名稱,輸入
ProxyIdentityExperienceFramework
。 - 在 [支援的帳戶類型] 底下,選取 [僅在此組織目錄中的帳戶]。
- 在 [重新導向 URI] 下,使用下拉式清單選取 [公用用戶端/原生計算機] (行動&裝置桌面)。
- 針對 [ 重新導向 URI],輸入
myapp://auth
。 - 在 [許可權] 底下,選取 [授與系統管理員同意以開啟標識符和offline_access許可權] 複選框。
- 選取註冊。
- 記錄應用程式 (用戶端) 識別碼,以供後續步驟使用。
接下來,指定應用程式應該視為公用用戶端:
- 在左側功能表中,於 [管理]下,選取 [驗證]。
- 在 [進階設定] 底下的 [允許公用用戶端流程] 區段中,將 [啟用下列行動和桌面流程] 設定為 [是]。
- 選取 [儲存]。
- 確定應用程式 指令清單中已設定 「allowPublicClient」:true :
- 在左側功能表中的 [管理] 底下,選取 [指令清單] 以開啟應用程式指令清單。
- 尋找 allowPublicClient 索引鍵,並確定其值設定為 true。
現在,將許可權授與您稍早在 IdentityExperienceFramework 註冊中公開的 API 範圍:
- 在左側功能表中的 [管理] 底下,選取 [API 許可權]。
- 在 [設定的許可權] 底下,選取 [新增許可權]。
- 選取 [ 我的 API] 索引 標籤,然後選取 [IdentityExperienceFramework ] 應用程式。
- 在 [許可權] 底下,選取您稍早定義的user_impersonation範圍。
- 選取新增權限。 依照指示,請稍候幾分鐘,再繼續進行下一個步驟。
- 選取 [授與租用戶名稱的<管理員同意]。>
- 選取 [是] 。
- 選取 [重新整理],然後確認 [已為 ... 授與]會出現在範圍的 [狀態] 底下。
自定義原則入門套件
自定義原則是您上傳至 Azure AD B2C 租使用者以定義技術配置檔和使用者旅程圖的一組 XML 檔案。 我們提供數個預先建置原則的入門套件,讓您快速上手。 這些入門套件都包含達到所述的案例所需的最少技術配置檔和使用者旅程圖:
- LocalAccounts - 僅啟用本機帳戶的使用。
- SocialAccounts - 只允許使用社交(或同盟)帳戶。
- SocialAndLocalAccounts - 啟用本機和社交帳戶的使用。
- SocialAndLocalAccountsWithMFA - 啟用社交、本機和多重要素驗證選項。
每個入門套件都包含:
- 基底檔案 - 需要對基底進行一些修改。 範例: TrustFrameworkBase.xml
- 當地語系化檔案 - 此檔案是進行當地語系化變更的位置。 範例: TrustFrameworkLocalization.xml
- 延伸模組檔案 - 此檔案是進行大部分組態變更的位置。 範例: TrustFrameworkExtensions.xml
- 信賴憑證者檔案 - 應用程式所呼叫的工作特定檔案。 範例:SignUpOrSignin.xml、ProfileEdit.xml、PasswordReset.xml
在本文中,您會編輯SocialAndLocalAccounts入門套件中的 XML 自定義原則檔案。 如果您需要 XML 編輯器,請嘗試 使用輕量型跨平台編輯器 Visual Studio Code。
取得入門套件
從 GitHub 取得自定義原則入門套件,然後使用您的 Azure AD B2C 租使用者名稱更新 SocialAndLocalAccounts 入門套件中的 XML 檔案。
下載 .zip 檔案 或複製存放庫:
git clone https://github.com/Azure-Samples/active-directory-b2c-custom-policy-starterpack
在 SocialAndLocalAccounts 目錄中的所有檔案中,將字串
yourtenant
取代為您的 Azure AD B2C 租用戶名稱。例如,如果 B2C 租使用者的名稱是 contosotenant,則的所有實例都會
yourtenant.onmicrosoft.com
變成contosotenant.onmicrosoft.com
。
將應用程式標識元新增至自定義原則
將應用程式標識碼新增至 Extensions 檔案 TrustFrameworkExtensions.xml。
- 開啟
SocialAndLocalAccounts/
TrustFrameworkExtensions.xml
並尋找項目<TechnicalProfile Id="login-NonInteractive">
。 - 將的兩個實例
IdentityExperienceFrameworkAppId
取代為您稍早建立的 IdentityExperienceFramework 應用程式的應用程式識別碼。 - 將的兩個實例
ProxyIdentityExperienceFrameworkAppId
取代為您稍早建立的 ProxyIdentityExperienceFramework 應用程式的應用程式識別碼。 - 儲存檔案。
將 Facebook 新增為識別提供者
SocialAndLocalAccounts 入門套件包含 Facebook 社交登入。 Facebook 不需要使用自定義原則,但我們會在這裡使用它來示範如何在自定義原則中啟用同盟社交登入。 如果您不需要啟用同盟社交登入,請改用 LocalAccounts 入門套件,並略過 [新增 Facebook 作為識別提供者 ] 區段。
建立Facebook應用程式
使用建立 Facebook 應用程式中所述的步驟來取得 Facebook 應用程式識別碼和應用程式秘密。 略過必要條件和設定註冊並使用Facebook帳戶登入一文中的其餘步驟。
建立Facebook金鑰
將 Facebook 應用程式的應用程式 秘密 新增為原則金鑰。 您可以使用您建立的應用程式秘密,作為本文必要條件的一部分。
- 登入 Azure 入口網站。
- 如果您有多個租使用者的存取權,請選取頂端功能表中的 [設定] 圖示,從 [目錄 + 訂用帳戶] 功能表切換至您的 Azure AD B2C 租使用者。
- 在 Azure 入口網站中,搜尋並選取 [Azure AD B2C]。
- 在 [概觀] 頁面的 [原則] 底下,選取 [身分識別體驗架構]。
- 選取 [ 原則密鑰 ],然後選取 [ 新增]。
- 針對 [ 選項],選擇
Manual
。 - 對於名稱,輸入
FacebookSecret
。 可能會自動新增前置詞B2C_1A_
。 - 在 [秘密] 中,從 developers.facebook.com 輸入您的 Facebook 應用程式應用程式秘密。 此值是秘密,而不是應用程式識別碼。
- 針對 [ 金鑰使用方式],選取 [ 簽章]。
- 選取建立。
更新自定義原則入門套件中的 TrustFrameworkExtensions.xml
在檔案中 SocialAndLocalAccounts/
TrustFrameworkExtensions.xml
,將的值 client_id
取代為 Facebook 應用程式識別碼,並儲存變更。
<TechnicalProfile Id="Facebook-OAUTH">
<Metadata>
<!--Replace the value of client_id in this technical profile with the Facebook app ID"-->
<Item Key="client_id">00000000000000</Item>
上傳原則
- 在 Azure 入口網站 中,選取 B2C 租使用者中的 [身分識別體驗架構] 選單項。
- 選取 [ 上傳自定義原則]。
- 依此順序,上傳原則檔案:
- TrustFrameworkBase.xml
- TrustFrameworkLocalization.xml
- TrustFrameworkExtensions.xml
- SignUpOrSignin.xml
- ProfileEdit.xml
- PasswordReset.xml
當您上傳檔案時,Azure 會將前置詞 B2C_1A_
新增至每個檔案。
提示
如果您的 XML 編輯器支援驗證,請針對 TrustFrameworkPolicy_0.3.0.0.xsd
位於入門套件根目錄中的 XML 架構驗證檔案。 XML 架構驗證會在上傳之前識別錯誤。
測試自定義原則
- 在 [自定義原則] 底下,選取 [B2C_1A_signup_signin]。
- 針對自定義 原則概觀頁面上的 [選取應用程式 ],選取您想要測試的 Web 應用程式,例如名為 webapp1 的 Web 應用程式。
- 請確定 回覆 URL 為
https://jwt.ms
。 - 選取 [ 立即執行]。
- 使用電子郵件地址註冊。
- 再次選取 [ 執行 ]。
- 使用相同的帳戶登入,以確認您有正確的設定。
- 再次選取 [ 執行] ,然後選取 [Facebook] 以使用Facebook登入並測試自定義原則。
下一步
在本文中,您已瞭解如何:
- 建立註冊並登入使用者流程
- 建立配置檔編輯使用者流程
- 建立密碼重設使用者流程
接下來,瞭解如何使用 Azure AD B2C 在應用程式中登入和註冊使用者。 請遵循下列連結的範例應用程式:
- ASP.NET Core Web 應用程式設定範例
- 設定 ASP.NET 呼叫 Web API 的 Core Web 應用程式範例
- 在範例 Python Web 應用程式中設定驗證
- 設定範例單頁應用程式 (SPA)
- 設定範例 Angular 單頁應用程式
- 設定範例 Android 行動應用程式
- 設定範例 iOS 行動應用程式
- 在範例 WPF 傳統型應用程式中設定驗證
- 在 Web API 中啟用驗證
- 設定 SAML 應用程式
您也可以在 Azure AD B2C 架構深入探討系列中深入瞭解。