這很重要
自 2025 年 5 月 1 日起,Azure AD B2C 將不再可供新客戶購買。 在我們的常見問題中深入瞭解。
本文介紹如何為 Python Web 應用程式啟用、自定義和增強 Azure Active Directory B2C (Azure AD B2C) 身份驗證體驗。
在開始之前,請務必熟悉如何使用 Azure AD B2C 在示例 Python Web 應用中配置身份驗證。
使用自訂網域
藉由使用 自定義網域,您可以完全將驗證 URL 品牌化。 從使用者的角度來看,使用者在驗證過程中會停留在您的網域上,而不會被重新導向至 Azure AD B2C b2clogin.com 網域名稱。
若要完全移除 URL 中對「b2c」的所有提及,您也可以將驗證請求 URL 中的 B2C 租使用者名稱 contoso.onmicrosoft.com 取代為您的租使用者 ID GUID。 例如,您可以變更 https://fabrikamb2c.b2clogin.com/contoso.onmicrosoft.com/ 變更為 https://account.contosobank.co.uk/<tenant ID GUID>/。
要在身份驗證 URL 中使用自訂域和租戶 ID,請執行以下作:
- 遵循 啟用自定義網域中的指引。
- 在 app_config.py 檔中,使用自定義域更新
authority_template類成員。
以下 Python 代碼顯示了更改前的應用程式設定:
authority_template = "https://{tenant}.b2clogin.com/{tenant}.onmicrosoft.com/{user_flow}"
以下 Python 代碼顯示了更改後的應用程式設定:
authority_template = "https://custom.domain.com/00000000-0000-0000-0000-000000000000/{user_flow}"
預先填入登入名稱
在登入使用者旅程圖期間,您的應用程式可能會以特定用戶為目標。 當應用程式以用戶為目標時,可以在授權要求 login_hint 中指定具有使用者登入名稱的查詢參數。 Azure AD B2C 會自動填入登入名稱,而且使用者只需要提供密碼。
若要預填登入名稱,請執行以下步驟:
- 如果您使用的是自定義策略,請按照 設置直接登錄中所述添加所需的輸入聲明。
- 找到方法
initiate_auth_code_flow,然後添加login_hint具有身份供應商功能變數名稱的參數(例如, facebook.com)。
def _build_auth_code_flow(authority=None, scopes=None):
return _build_msal_app(authority=authority).initiate_auth_code_flow(
scopes or [],
redirect_uri=url_for("authorized", _external=True),
login_hint="bob@contoso.com")
預先選取識別提供者
如果您將應用程式的登入旅程設定為包含社交帳戶,例如 Facebook、LinkedIn 或 Google,您可以指定 domain_hint 參數。 此查詢參數會針對應該用於登入的社交識別提供者,提供 Azure AD B2C 的提示。 例如,如果應用程式指定 domain_hint=facebook.com,則登入流程會直接移至 Facebook 登入頁面。
若要將使用者重新導向至外部識別提供者,請執行下列動作:
檢查您的外部身份提供者的網域名稱。 如需詳細資訊,請參閱 將登入重新導向至社交提供者。
initiate_auth_code_flow找到方法,然後添加domain_hint帶有登錄提示的參數。def _build_auth_code_flow(authority=None, scopes=None): return _build_msal_app(authority=authority).initiate_auth_code_flow( scopes or [], redirect_uri=url_for("authorized", _external=True), domain_hint="facebook.com")
後續步驟
- 若要瞭解詳細資訊,請參閱 適用於 Python 的 MSAL 配置選項。