Azure AD B2C を使用して Python Web アプリの認証オプションを有効にする

この記事では、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 を使用するには、次の操作を行います。

  1. カスタム ドメインの有効化に関する記事のガイダンスに従います。
  2. 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 によってサインイン名が自動的に入力されるので、ユーザーはパスワードを入力するだけで済みます。

サインイン名を事前入力するには、次の手順を実行します。

  1. カスタム ポリシーを使用している場合は、直接サインインの設定に関する記事の説明に従って、必要な入力要求を追加します。
  2. initiate_auth_code_flow メソッドを見つけてから、ID プロバイダーのドメイン名 (facebook.com など) を指定した login_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),
        login_hint="bob@contoso.com")

ID プロバイダーを事前に選択する

Facebook、LinkedIn、Google などのソーシャル アカウントを含むようにアプリケーションのサインイン プロセスを構成した場合は、domain_hint パラメーターを指定できます。 このクエリ パラメーターは、サインインに使用する必要があるソーシャル ID プロバイダーに関するヒントを Azure AD B2C に提供します。 たとえば、アプリケーションで domain_hint=facebook.com を指定した場合、サインイン フローで Facebook のサインイン ページに直接移動します。

外部 ID プロバイダーにユーザーをリダイレクトするには、以下を実行します。

  1. 外部 ID プロバイダーのドメイン名を確認します。 詳細については、「サインインをソーシャル プロバイダーにリダイレクトする」を参照してください。

  2. 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")
    

次のステップ