【MS Azure B2C:チュートリアル】カスタムポリシーでアプリに対する同意が得られず、サインインできないときの対処法

## はじめに
　今回は、Microsoft Azure B2Cのチュートリアルにおいてカスタムポリシーアップロード後、サインインが上手くいかないときの対処法を丁寧に解説していきたいと思います。
　今まさに「カスタムポリシーのアップロードはできたのに、なぜかサインインできない」、「Microsoft公式サイト通りの手順でAPIも許可しているはずなのに、うまくいかない」などお困りの方は、ぜひ本稿の内容をご覧ください。

## 前提条件
- MS Azure B2Cのテナントを作成済み
- Webアプリケーションを登録済み
- カスタムポリシーを作成済み（下記リンクの手順）
https://docs.microsoft.com/ja-jp/azure/active-directory-b2c/tutorial-create-user-flows?pivots=b2c-custom-policy#add-signing-and-encryption-keys%E3%80%80


## サインインまでのステップと症状
1. まずは、portalにログインし、Azure AD B2C テナントが含まれるディレクトリに切り替えた後、検索バーから[Azure AD B2C]を選択。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2670585/e2dff866-b97a-6ff6-8854-b4b772ebd784.png)

2. 左メニュー[管理]から[Identity Experience Framework]を選択。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2670585/0e0aa61f-d4e8-b2bd-965c-b2e863b1843e.png)


3. 下へスクロールし、[B2C_1A_SIGNUP_SIGNIN]を選択。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2670585/0bc36e2f-005a-44fd-bcb1-8ab4556cdff0.png)


4. 以前に作成したWebアプリと応答URLを選択し、[今すぐ実行]を押下。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2670585/d9dbfd52-1c04-20ae-89ba-f98cf9876239.png)

5. サインイン
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2670585/0200be24-0595-af87-7c56-6b6f25fd4390.png)

6. すると、下記のような表示が出てしまう。。。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2670585/b7a1c801-53a1-632b-5774-5f3e4e67f0ab.png)

※翻訳（筆者訳）：このアプリに対するID'XXXXX'は同意が得られず、ローカルアカウントでの使用ができない。

## 原因と対処法
　原因として考えられるのが、以前チュートリアルで作成した[ProxyIdentityExperienceFramework]にまだ許可されていないAPIがあるということです。赤字のエラーメッセージ'The application with identifler'の後ろに表示されたIDは[ProxyIdentityExperienceFramework]のアプリケーションIDを示しています。下記の手順に沿って、APIのアクセス許可の追加を行っていきましょう。


1. [Identity Experience Framework]上の左メニュー[アプリの登録]を押下。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2670585/e5e33439-3ace-4c2d-ebb5-9f3ee3820c5c.png)

2. [ProxyIdentityExperienceFramework]を選択した後、左メニュー[APIのアクセス許可]を選択。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2670585/32fc0d81-51ad-4446-867d-45b7a3de748e.png)

3. [アクセス許可の追加]を選択。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2670585/32b2f390-2e9f-1f08-d197-95ec2122e776.png)

4. [自分のAPI]を選択し、[IdentityExperienceFramework]を選択。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2670585/85c86eed-7fb5-c721-d0a7-de756448862f.png)

5. [アクセス許可]下の[user_impersonation]に✓を入れ、[アクセス許可の追加]を選択。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2670585/8abe89a0-2cf7-675d-a8c9-52a9b08d355e.png)

6. [ProxyIdentityExperienceFramework | APIのアクセス許可]の画面に遷移後、[状態]にまだテナントにアクセス許可が付与されていないことを確認。[アクセス許可の追加]右横の[テナントに管理者の同意を与えます]を選択することで、テナントに付与。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2670585/70a9ab67-1e8e-6b99-a946-b0b5bb30dff2.png)


7. 再び上記の「サインインまでのステップ」通りに実施し、無事にサインインされることを確認。

## まとめ
　今回は、MS Azure B2Cのカスタムポリシーアップロード後にエラーメッセージなくサインインできる方法についてまとめました。ざっくりと「ProxyIdentityExperienceFramework⇒APIアクセス許可の追加⇒テナントに管理者の同意を付与」の流れで解決できます。まだ思うようにサインインできていない方はぜひ上記の方法で試してみてください。

## 参考にしたサイト
https://docs.microsoft.com/ja-jp/azure/active-directory-b2c/tutorial-create-user-flows?pivots=b2c-custom-policy#add-signing-and-encryption-keys%E3%80%80