クラウドインテグレーション事業部 山口です。
マネージドなIDプロバイダーとして利用できるCognitoですが、外部IDプロバイダーとして連携する機能があります。 Office365などを利用してる環境でAzureADを利用しているケースなど、AzureADに登録されているユーザ情報をもとに認証認可の制御を行うことが可能です。
難しいステップはなく連携できますので簡単な手順をメモ代わりに書いていきます。
AzureADの作業
AzureADにアプリケーション登録を行う
アプリ登録後、プラットフォーム構成からリダイレクトURLを入力します。 下記例はAmazon Cognitoドメイン名をベースとしたURLですが、所有ドメインを使う事も可能です。
https://Amazon Cognito ドメイン.auth.ap-northeast-1.amazoncognito.com/oauth2/idpresponse
クライアントシークレットを発行する
Cognitoからリクエストを受けつけるためのクライアントシークレットを生成します。 メモを忘れるとあとで見直すことはできないので注意です。
Cognitoユーザプールの作業
IDプロバイダー(外部フェデレーテッド ID プロバイダ)を設定する
下記を参考に入力します。
クライアントID: AzureADのアプリ登録内の概要にある「アプリケーション (クライアント) ID」を転記 クライアントシークレット: AzureADのアプリ登録時に生成したクライアントシークレットを転記 属性のリクエストメソッド: POST 承認スコープ: 任意(profile openid など) 発行者:https://login.microsoftonline.com/<AzureADのアプリ登録内の概要にある「ディレクトリ (テナント) ID」>/v2.0
検出の実行をクリックして、「openid 設定エンドポイントを正常に取得しました。」が出力されたら保存をしましょう。
アプリクライアントを作成
アプリクライアントを作成します。 アプリクライアントIDはCognitoへ認証リクエストを行う時など必要になります。
アプリクライアントの設定
下記の図を参考に必要情報を入力します。 コールバックURLは、AzureADのアプリ登録時に入力したものと同じにします。 異なっていた場合、エラーになるので注意。
サインアウトURLは下記を入力します。 サインアウトURLの入力は任意ですが、入力する場合はAzureADのアプリ登録よりプラットフォーム構成内にあるログアウトURLにも同じ内容が入力されている必要があります。
https://login.microsoftonline.com/<AzureADのアプリ登録内の概要にある「ディレクトリ (テナント) ID」>/oauth2/v2.0/logout?post_logout_redirect_uri=<ログアウト後にリダイレクトしたいURLをURLエンコードで記載>
属性マッピングの設定
AzureADのidトークンに含まれる情報をCognitoユーザプールの任意の属性にマッピングすることが可能です。 動作する上で必須ではありませんが、必要な場合はCognitoユーザプールで扱う情報をもとに設定します。
Webアプリケーションの設定
ここではWebアプリケーションの解説は割愛しますが、Webアプリケーションは意識せずに、 Cognitoユーザプールドメインの /oauth2/authorizeエンドポイントに認証リクエストを行います。 認証リクエストを行うと、Microsoftアカウントのログイン画面へリダイレクトされます。
ログインが成功したユーザはCognitoユーザプール内にユーザが追加されてますので、AzureADには存在しないカスタム属性を追加したり、アプリケーション特性にあったユーザプールとして利用することができます。