チュートリアル: Azure Active Directory B2C でユーザー フローとカスタム ポリシーを作成する
"開始する前に"、[ポリシーの種類の選択] セレクターを使用して、設定するポリシーの種類を選択します。 Azure Active Directory B2C には、ユーザーがアプリケーションを操作する方法を定義する 2 つの方法 (定義済みのユーザー フローを使用する、または完全に構成可能なカスタム ポリシーを使用する) があります。 この記事で必要な手順は、方法ごとに異なります。
お使いのアプリケーションに、ユーザーによるサインアップ、サインイン、プロファイル管理を可能にするユーザー フローを設定できます。 Azure Active Directory B2C (Azure AD B2C) テナント内にさまざまな種類のユーザー フローを複数作成し、それらを必要に応じてアプリケーションで使用できます。 ユーザー フローは、アプリケーション間で再利用することができます。
ユーザー フローを使用することで、ユーザーがサインイン、サインアップ、プロファイルの編集、パスワードのリセットなどを行うときに、アプリケーションとどのように対話するかを決定できます。 この記事では、次のことについて説明します。
カスタム ポリシーは、Azure Active Directory B2C (Azure AD B2C) テナントの動作を定義する構成ファイルです。 この記事では、次の方法について説明します。
- サインアップとサインイン ユーザー フローを作成する
- セルフサービス パスワード リセットを有効にする
- プロファイル編集ユーザー フローを作成する
重要
ユーザー フローのバージョンを参照する方法が変更されました。 これまでは、V1 (運用対応) バージョンと V1.1 および V2 (プレビュー) バージョンが提供されていました。 今回、ユーザー フローが 2 つのバージョンに統合されました。最新の機能を備えた推奨ユーザー フローと標準 (レガシ) ユーザー フローです。 レガシ プレビュー ユーザー フロー (V1.1 および V2) はすべて非推奨です。 詳細については、Azure AD B2C のユーザー フローのバージョンに関するページを参照してください。 これらの変更は、Azure パブリック クラウドにのみ適用されます。 その他の環境では、レガシ ユーザー フローのバージョンの管理が引き続き使用されます。
前提条件
- まだ持っていない場合は、お使いの Azure サブスクリプションにリンクされている Azure AD B2C テナントを作成します。
- Web アプリケーションを登録し、ID トークンの暗黙的な許可を有効にします。
- まだ持っていない場合は、お使いの Azure サブスクリプションにリンクされている Azure AD B2C テナントを作成します。
- Web アプリケーションを登録し、ID トークンの暗黙的な許可を有効にします。
サインアップとサインイン ユーザー フローを作成する
サインアップとサインイン ユーザー フローは、サインアップ エクスペリエンスとサインイン エクスペリエンスの両方を 1 つの構成で処理します。 アプリケーションのユーザーは、状況に応じて正しいパスに誘導されます。
Azure portal にサインインします。
複数のテナントにアクセスできる場合、上部のメニューの [設定] アイコンを選び、[ディレクトリとサブスクリプション] メニューからお使いの Azure AD B2C テナントに切り替えます。
Azure portal で、 [Azure AD B2C] を検索して選択します。
[ポリシー] で、 [ユーザー フロー] を選択し、 [新しいユーザー フロー] を選択します。
[ユーザー フローを作成する] ページで、 [サインアップとサインイン] ユーザー フローを選択します。
[バージョンの選択] で [Recommended]\(推奨\) を選択して、 [作成] を選択します。 (ユーザー フローのバージョンに関する詳細情報)。
ユーザー フローの [名前] を入力します。 たとえば、「signupsignin1」と入力します。
[ID プロバイダー] の [電子メールのサインアップ] を選択します。
[ユーザー属性とトークン要求] で、サインアップ中にユーザーから収集して送信する要求と属性を選択します。 たとえば、 [Show more](さらに表示) を選択し、 [国/リージョン] 、 [表示名] 、 [郵便番号] の属性と要求を選択します。 [OK] を選択します。
[作成] を選択して、ユーザー フローを追加します。 B2C_1_ というプレフィックスが自動的に名前に追加されます。
ユーザー フローをテストする
作成したユーザー フローを選択してその概要ページを開きます。
ユーザー フローの [概要] ページの上部にある [ユーザー フローを実行します] を選択します。 ページの右側にウィンドウが開きます。
[アプリケーション] で、テストする Web アプリケーション (webapp1 という名前のアプリケーションなど) を選択します。 [応答 URL] に
https://jwt.ms
と表示されます。[ユーザー フローを実行します] を選択してから、[今すぐサインアップ] を選択します。
有効なメール アドレスを入力し、[確認コードの送信] を選択します。受信した確認コードを入力し、[コードの確認] を選択します。
新しいパスワードを入力し、そのパスワードを確認します。
国とリージョンを選択し、表示する名前を入力し、郵便番号を入力したら、[作成] を選択します。 トークンが
https://jwt.ms
に返され、表示されます。これでユーザー フローをもう一度実行できるようになりました。作成したアカウントでサインインできる必要があります。 返されたトークンには、選択した国/リージョン、名前、および郵便番号の要求が含まれています。
注意
[ユーザー フローを実行します] エクスペリエンスは、現在、認可コード フローを使用する、種類が SPA の応答 URL と互換性がありません。 これらの種類のアプリで [ユーザー フローを実行します] エクスペリエンスを使用するには、種類が "Web" の応答 URL を登録し、こちらの説明に従って暗黙的なフローを有効にします。
セルフサービス パスワード リセットを有効にする
サインアップまたはサインインのユーザー フローでセルフサービス パスワード リセットを有効にするには:
- 作成した、サインアップまたはサインインのユーザー フローを選択します。
- 左側のメニューの [設定] で、 [プロパティ] を選択します。
- [Password configuration](パスワードの構成) で、 [セルフサービス パスワード リセット] を選択します。
- [保存] を選択します。
ユーザー フローをテストする
- 作成したユーザー フローを選択してその概要ページを開き、 [ユーザー フローの実行] を選択します。
- [アプリケーション] で、テストする Web アプリケーション (webapp1 という名前のアプリケーションなど) を選択します。 [応答 URL] に
https://jwt.ms
と表示されます。 - [ユーザー フローを実行します] を選択します。
- サインアップまたはサインインのページで、 [パスワードを忘れた場合] を選択します。
- 前に作成したアカウントの電子メール アドレスを確認してから、 [続行] を選択します。
- これで、ユーザーのパスワードを変更できるようになりました。 パスワードを変更し、 [続行] を選択します。 トークンが
https://jwt.ms
に返され、表示されます。
プロファイル編集ユーザー フローを作成する
アプリケーションでユーザーによるプロファイル編集を有効にする場合は、プロファイル編集ユーザー フローを使用します。
- Azure AD B2C テナントの [概要] ページのメニューで、 [ユーザー フロー] を選択し、 [新しいユーザー フロー] を選択します。
- [ユーザー フローを作成する] ページで、 [プロファイル編集] ユーザー フローを選択します。
- [バージョンの選択] で [Recommended](推奨) を選択して、 [作成] を選択します。
- ユーザー フローの [名前] を入力します。 たとえば、「profileediting1」と入力します。
- ID プロバイダーの場合は、[ローカル アカウント] の下にある [電子メールのサインアップ] を選択します。
- [ユーザー属性] で、ユーザーが自分のプロファイルで編集できる属性を選択します。 たとえば、 [Show more](さらに表示) を選択し、 [表示名] と [役職] の属性と要求を選択します。 [OK] を選択します。
- [作成] を選択して、ユーザー フローを追加します。 B2C_1_ というプレフィックスが自動的に名前に追加されます。
ユーザー フローをテストする
- 作成したユーザー フローを選択してその概要ページを開きます。
- ユーザー フローの [概要] ページの上部にある [ユーザー フローを実行します] を選択します。 ページの右側にウィンドウが開きます。
- [アプリケーション] で、テストする Web アプリケーション (webapp1 という名前のアプリケーションなど) を選択します。 [応答 URL] に
https://jwt.ms
と表示されます。 - [ユーザー フローを実行します] を選択し、以前に作成したアカウントでサインインします。
- これで、ユーザーの表示名と役職を変更できるようになりました。 [続行] をクリックします。 トークンが
https://jwt.ms
に返され、表示されます。
ヒント
この記事では、テナントを手動で設定する方法について説明します。 この記事からプロセス全体を自動化できます。 自動化すると、Azure AD B2C SocialAndLocalAccountsWithMFA スターター パック がデプロイされます。これにより、サインアップとサインイン、パスワードのリセット、プロファイル編集の体験が提供されます。 以下のチュートリアルを自動化するには、IEF セットアップ アプリにアクセスし、指示に従います。
Identity Experience Framework アプリケーションに署名および暗号化キーを追加する
- Azure portal にサインインします。
- 複数のテナントにアクセスできる場合、上部のメニューの [設定] アイコンを選択し、[ディレクトリとサブスクリプション] メニューからお使いの Azure AD B2C テナントに切り替えます。
- Azure portal で、 [Azure AD B2C] を検索して選択します。
- [概要] ページで、 [ポリシー] を選択してから [Identity Experience Framework] を選択します。
署名キーを作成します。
- [ポリシー キー] を選択し、 [追加] を選択します。
- オプションについては、
Generate
を選択します。 - 名前に
TokenSigningKeyContainer
を入力します。 プレフィックスB2C_1A_
が自動的に追加される場合があります。 - キー タイプについては、RSA を選択します。
- [キー使用法] には [署名] を選択します。
- [作成] を選択します
暗号化キーを作成します。
- [ポリシー キー] を選択し、 [追加] を選択します。
- オプションについては、
Generate
を選択します。 - 名前に
TokenEncryptionKeyContainer
を入力します。 プレフィックスB2C_1A
_ が自動的に追加される場合があります。 - キー タイプについては、RSA を選択します。
- [キー使用法] には [暗号化] を選択します。
- [作成] を選択します
Identity Experience Framework アプリケーションを登録する
Azure AD B2C では、ローカル アカウントでのユーザーのサインアップとサインインのために使用する 2 つのアプリケーションを登録する必要があります。IdentityExperienceFramework (Web API) と、IdentityExperienceFramework アプリへのアクセス許可が委任された ProxyIdentityExperienceFramework (ネイティブ アプリ) です。 ユーザーはメール アドレスまたはユーザー名およびパスワードを使用してサインアップし、テナントに登録されたアプリケーションにアクセスできます。これにより "ローカル アカウント" が作成されます。ローカル アカウントは、Azure AD B2C テナント内にのみ存在します。
この 2 つのアプリケーションを Azure AD B2C テナントに 1 回だけ登録する必要があります。
IdentityExperienceFramework アプリケーションを登録します
Azure AD B2C テナントにアプリケーションを登録するには、アプリの登録エクスペリエンスを使用できます。
- [アプリの登録] を選択し、 [新規登録] を選択します。
- 名前には、
IdentityExperienceFramework
を入力します。 - [サポートされているアカウントの種類] で、 [この組織のディレクトリ内のアカウントのみ] を選択します。
- [リダイレクト URI] で [Web] を選択し、「
https://your-tenant-name.b2clogin.com/your-tenant-name.onmicrosoft.com
」と入力します。your-tenant-name
は、Azure AD B2C テナント ドメイン名です。 - [アクセス許可] で、 [openid と offline_access アクセス許可に対して管理者の同意を付与します] チェック ボックスをオンにします。
- [登録] を選択します。
- 後の手順で使用するために、アプリケーション (クライアント) ID を記録しておきます。
次に、スコープを追加して API を公開します。
- 左側のメニューの [管理] で、 [API の公開] を選択します。
- [スコープの追加] 、 [保存して続行] の順に選択し、既定のアプリケーション ID 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
」と入力します。 - [アクセス許可] で、 [openid と offline_access アクセス許可に対して管理者の同意を付与します] チェック ボックスをオンにします。
- [登録] を選択します。
- 後の手順で使用するために、アプリケーション (クライアント) ID を記録しておきます。
次に、アプリケーションをパブリック クライアントとして扱うよう指定します。
- 左側のメニューの [管理] セクションで、 [認証] を選択します。
- [詳細設定] の [パブリック クライアント フローを許可する] セクションで、 [次のモバイルとデスクトップのフローを有効にする] を [はい] に設定します。
- [保存] を選択します。
- "allowPublicClient": true がアプリケーション マニフェストで確実に設定されているようにします。
- 左側のメニューの [管理] で [マニフェスト] を選択し、アプリケーション マニフェストを開きます
- allowPublicClient キーを見つけ、その値が true に設定されていることを確認します。
次に、IdentityExperienceFramework 登録で前に公開した API スコープに、アクセス許可を付与します。
- 左側のメニューの [管理] で、 [API のアクセス許可] を選択します。
- [構成されたアクセス許可] の下で [アクセス許可の追加] を選択します。
- [自分の API] タブ、IdentityExperienceFramework アプリケーションの順に選択します。
- [アクセス許可] で、前に定義した [user_impersonation] スコープを選択します。
- [アクセス許可の追加] を選択します. 指示に従って、数分待ってから次の手順に進みます。
- [<テナント名> に管理者の同意を与えます] を選択します。
- [はい] を選択します。
- [最新の情報に更新] を選択し、スコープの [状態] に、"Granted for ..." (... に付与されました) と表示されていることを確認します。
カスタム ポリシー スターター パック
カスタム ポリシーは、技術プロファイルとユーザー体験を定義するために 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 からカスタム ポリシー スターター パックを取得し、SocialAndLocalAccounts スターター パック内の XML ファイルの名前を Azure AD B2C テナントの名前に更新します。
.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
になります。
カスタム ポリシーにアプリケーション ID を追加します。
拡張子ファイル TrustFrameworkExtensions.xml にアプリケーション ID を追加します。
SocialAndLocalAccounts/
TrustFrameworkExtensions.xml
を開いて、<TechnicalProfile Id="login-NonInteractive">
要素を見つけます。IdentityExperienceFrameworkAppId
の両方のインスタンスを、前に作成した IdentityExperienceFramework アプリケーションのアプリケーション ID に置き換えます。ProxyIdentityExperienceFrameworkAppId
の両方のインスタンスを、前に作成した ProxyIdentityExperienceFramework アプリケーションのアプリケーション ID に置き換えます。- ファイルを保存します。
Facebook を ID プロバイダーとして追加する
SocialAndLocalAccounts スターター パックには、Facebook のソーシャル サインインが含まれています。 Facebook はカスタム ポリシーを使用するための必須条件ではありませんが、ここではカスタム ポリシーでソーシャル ログインを連携できることを示す目的で使用されています。 フェデレーション ソーシャル ログインを有効にする必要がない場合は、代わりに LocalAccounts スターター パックを使用し、[Facebook を ID プロバイダーとして追加する] セクションをスキップします。
Facebook アプリケーションを作成する
「Facebook アプリケーションの作成」で説明した手順を使用して、Facebook の "アプリ ID" と "アプリ シークレット" を取得します。 「Facebook アカウントでのサインアップおよびサインインを設定する」に記載されている前提条件と残りの手順はスキップしてください。
Facebook のキーを作成します。
ポリシー キーとして、Facebook アプリケーションの [アプリ シークレット]を追加します。 この記事の前提条件の一部として作成したアプリケーションのアプリ シークレットを使用できます。
- Azure portal にサインインします。
- 複数のテナントにアクセスできる場合、上部のメニューの [設定] アイコンを選択し、[ディレクトリとサブスクリプション] メニューからお使いの Azure AD B2C テナントに切り替えます。
- Azure portal で、 [Azure AD B2C] を検索して選択します。
- [概要] ページで、 [ポリシー] を選択してから [Identity Experience Framework] を選択します。
- [ポリシー キー] を選択し、 [追加] を選択します。
- オプションについては、
Manual
を選択します。 - 名前には、
FacebookSecret
を入力します。 プレフィックスB2C_1A_
が自動的に追加される場合があります。 - シークレットで、developers.facebook.com から Facebook アプリケーションのアプリ シークレットを入力します。 この値はシークレットであり、アプリケーション ID ではありません。
- [キー使用法] には [署名] を選択します。
- [作成] を選択します
カスタム ポリシー スターター パックの TrustFrameworkExtensions.xml を更新する
SocialAndLocalAccounts/
TrustFrameworkExtensions.xml
ファイルで client_id
の値を Facebook アプリケーションの ID と置き換え、変更を保存します。
<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 portal で B2C テナントに移動し、 [Identity Experience Framework] を選択します。
- [カスタム ポリシーのアップロード] を選択します。
- 次の順序でポリシー ファイルをアップロードします。
- 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 という名前のアプリケーションなど) を選択します。
- [返信 URL] が
https://jwt.ms
であることを確認します。 - [今すぐ実行] を選択します。
- メール アドレスを使用してサインアップします。
- もう一度 [今すぐ実行] を選択します。
- 同じアカウントでサインインし、構成が正しく行われていることを確認します。
- 再び [今すぐ実行] を選択し、Facebook でサインインする Facebook を選択し、カスタム ポリシーをテストします。
次のステップ
この記事で学習した内容は次のとおりです。
- サインアップとサインイン ユーザー フローを作成する
- プロファイル編集ユーザー フローを作成する
- パスワードのリセット ユーザー フローを作成する
次に、Azure AD B2C を使用して、アプリケーションでユーザーをサインインおよびサインアップする方法を学習します。 下記のリンクされたサンプル アプリに従ってください。
- サンプル ASP.NET Core Web アプリを構成する
- Web API を呼び出すサンプル ASP.NET Core Web アプリを構成する
- サンプル Python Web アプリケーションで認証を構成する
- サンプルのシングルページ アプリケーション (SPA) を構成する
- サンプル Angular シンプルページ アプリを構成する
- サンプル Android モバイル アプリを構成する
- サンプル iOS モバイル アプリを構成する
- サンプル WPF デスクトップ アプリケーションで認証を構成する
- Web API で認証を有効にする
- SAML アプリケーションを構成する
「Azure AD B2C アーキテクチャ詳細情報シリーズ」の詳細情報もご覧ください。