【AWS】Cognito ユーザプールをAzure ADをIdPとして構築する(後編)

## 前編はこちら
【AWS】Cognito ユーザプールをAzure ADをIdPとして構築する(前編)

https://qiita.com/kei1-dev/items/a0870c26da51dbaa6580

## 構築Step
- 前編 
 - 1. AWS Cognito ユーザプール構築
 - 2. AWS AppClient構築、設定
- 後編
 - 3. Azure AD構築、Enterprise Application構築
 - 4. AWS Cognito ユーザプール IdP設定

### 3. Azure AD構築、Enterprise Application構築
#### ※ 1～5は新規Azure AD構築のため、Skip可能
- 1.  Azure portalへログインし、画面左上ハンバーガーメニューから"Azure Active Directory"を選択、"テナントの切り替え"を押下、以下画面で"作成"ボタンを押下
![13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479886/d60a6ced-d44f-71f6-fb5c-01a6da036541.png)
- 2. そのまま"次:構成>"を押下
![14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479886/028e20c8-3c00-4dbf-825e-5665fe17a051.png)
- 3. 任意の組織名、初期ドメイン名を入力、"次:確認および作成>"を押下
![15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479886/d113221e-e32f-439a-386a-e070e78e55df.png)
- 4. 作成内容を確認し、"作成"ボタンを押下
![16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479886/ce4288e6-3293-947e-072c-3daea2d90e4f.png)
- 5. テナントが作成されたことを確認、リンクから新テナントへ移動
![17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479886/8f9a95eb-1eaf-241a-a8fb-f75f43a2f74d.png)
- (必要なら"追加">"ユーザー"から新規ユーザを登録)
![18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479886/a1c605f2-e0f6-c1e8-597d-78aeae3950e7.png)
- 6.画面左メニューから"エンタープライズアプリケーション"を選択、"新しいアプリケーション"を押下
![19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479886/08424382-73e1-1b17-5a04-9a9c3c5d3eba.png)
- 7. "独自のアプリケーションを作成"を押下
![20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479886/42d0add0-66f7-d60c-de06-cd28822610e7.png)
- 8. アプリ名を入力、"ギャラリーに見つからないその他のアプリケーションを統合します"を選択
![21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479886/da294a9a-262d-ffe6-4d9e-ab84ff483d9e.png)
- 9. メニューから"シングルサインオン"を選択、"SAML"を押下
![22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479886/6bed52d5-f9e6-f0a7-136b-0605618dcfa1.png)
- 10. "基本的なSAML構成"の鉛筆アイコンを押下
![23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479886/9938fb66-0281-37ff-d838-18fe53d8ed3d.png)
- 11. 識別子、応答URLを以下の要領で入力、保存
 - 識別子: urn:amazon:cognito:sp:(CognitoのユーザプールID)
 - 応答URL: https://(Amazon Cognito ドメイン).auth.(Amazon Cognitoの地域).amazoncognito.com/saml2/idpresponse
![24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479886/374261e5-fd8a-62de-cdb0-2aac2e1dd597.png)
- 12. SAML署名証明書でフェデレーションメタデータXMLからダウンロード
![25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479886/3748087b-deed-f123-ac51-8fa7ae317773.png)
- 13. 画面左メニューから"ユーザとグループ">"ユーザまたはグループの追加"を選択、ユーザを追加、割り当てを実施
![26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479886/5ccc5342-a1d3-8b52-ce0e-48c1c2549ede.png)
- 14. 追加されたことを確認
![27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479886/b96fff4d-b0df-0234-acb7-25dec551be79.png)

### 4. AWS Cognito ユーザプール IdP設定
- 1. Cognito ユーザプールへアクセス、メニューから"IDプロバイダー"を選択、"SAML"を選択
![28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479886/de4ed747-d4ce-f6f7-8213-44e492ae4227.png)
- 2. ダウンロードしたフェデレーションメタデータXMLをアップロード、任意のプロバイダ名を入力
![29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479886/f2a1e771-0c9f-51a1-7ec5-528ffda45361.png)
- 3. メニューで"属性マッピング">"SAML"を選択、SAML属性欄に"http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress" を入力、保存
![30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479886/f09d400e-d4d4-d685-e820-0eea1f2189f1.png)
- 4. メニューから"アプリクライアントの設定"を選択、"有効なIDプロバイダ"で作成したプロバイダ名を選択
![31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479886/0fc02b99-a016-246a-3952-82c8ee00cfa2.png)

### 動作確認
- 以下のURLを入力、プロバイダ名を押下
 - https://＜ドメイン名＞.auth.ap-northeast-1.amazoncognito.com/login?response_type=code&client_id=＜アプリクライアントID＞&redirect_uri=<リダイレクト先URL＞

 - ※ 今回、リダイレクトURLはhttp://localhost:8080
![32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479886/723f8635-c2e9-fe8b-200c-fcfb069ef903.png)
- 割り当てしたアカウントでサインインを実施
![33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479886/617bed9c-3b3a-28c2-4f26-88c20a5546b7.png)
- 正常に認証されるとリダイレクトURLへ指定した画面へ遷移、APIのレスポンスにSAML Responseが含まれていることを確認
 - localhostで何も動かしていないため、エラー画面となっています
![34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479886/6dea66a8-b943-5823-6796-d7865f62b490.png)
![35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/479886/0454e911-8ff0-213d-d0b4-8a774c5471cc.png)

## まとめ
Cognitoユーザプールの設定とAzure ADのテナント構築から設定を実施し、IdPをAzure ADとしたCognitoユーザプールを構築することができました。

## 前編は以下
【AWS】Cognito ユーザプールをAzure ADをIdPとして構築する(前編)

https://qiita.com/kei1-dev/items/a0870c26da51dbaa6580

## 参考サイト
前後編に渡って以下サイトを参考にさせていただきました。

https://aws.amazon.com/jp/premiumsupport/knowledge-center/cognito-ad-fs-saml/

https://medium.com/@zippicoder/setup-aws-cognito-user-pool-with-an-azure-ad-identity-provider-to-perform-single-sign-on-sso-7ff5aa36fc2a