LoginSignup
0
0

CognitoをOIDCの外部プロバイダーとして設定する

Last updated at Posted at 2023-09-22

背景

社内でAzureAD(今はEntraID?)と連携したアプリケーションが複数あり、新しくアプリケーションを作るたびにAzureAD Appを作らなければならなかった。それぞれのアプリケーションで許可されるユーザーが同じものが多かったため統合したかった。

前提

  • 筆者は認証周りに疎く調べながらやったため、BestPracticeではない(と思う)
  • Cognitoの利用経験あり
  • 導入先のWebアプリケーションもCognitoによる認証を導入することとする。
    ※OIDCとして提供できるのでCognito以外のFrameworkやServiceでも利用可能(だと思う)

図解

統合プロバイダーのCognito設定

AWS Consoleが英語表示なのは、公式Docを基本enで見るため

まずはAzureADとのSAML連携をする必要がある。
そこはインターネッツにたくさん資料が転がっているので自力で頑張ろう。

では、OIDC提供準備に入る。

Cognito App clientを作成

「App integration」 → 「App client list」 → 「Create app client」

image.png

image.png

App client

  • Client secret
    • Generate a client secretを選択

Hosted UI settings

  • Allowed callback URLs
    • 提供先のcallbackURLを入れる
    • 今回は提供先もCognitoを使う前提のため https://{AppClientName}.auth.{region}.amazoncognito.com/oauth2/idpresponseを入れる
    • 適当に入れておいて後から編集でも問題なし
  • Identity providers
    • 連携しておいたAzureADを選択

他はお好みでok

今回は
OAuth 2.0 grant typesAuthorization code grantのみ
OpenID Connect scopesOpenIDのみ
にしてみた。
Attribute permissionsも利用属性などに合わせてお好みで。

さて、完成したところでOIDCで必要な情報をメモ

  • Client ID
  • Client secret
  • User pool ID

提供先の認証

今回はCognitoで簡単に準備してみる。

ユーザープールを作るところまでは、何でもOKなので公式ドキュメント通りに。

大切なのは、OIDC連携の紐づけから。

「Sign-in experience」 → 「Federated identity provider sign-in」 → 「Add identity provider」

OpenID Connect(OIDC)を選択
image.png

  • Client ID
    • さっきメモしたClient ID
  • Client secret
    • さっきメモしたClient secret
  • Retrieve OIDC endpoints > Setup method
    • Auto fill through issuer URL
    • issuer URL
      • さっきメモしたUser pool IDを使って
        https://cognito-idp.{region}.amazonaws.com/{UserPoolID}

必要に応じて、このCognito AppのApp client nameを使ったcallbackURLを統合プロバイダー側のCognitoに設定する。

https://{AppClientName}.auth.{region}.amazoncognito.com/oauth2/idpresponse

こっちのCognitoのHosted UI > Allowed callback URLsにはテスト用に
https://www.google.com
とか入れておけば、「View Hosted UI」で検証できる。

ログインに成功すると、アプリケーション利用想定のCognitoのUsersにAzureAD認証を通ってきたUserが追加されている。

まとめ

「cognito as oidc provider」と検索をかけてもCognitoにOIDC連携を登録するドキュメントや海外の古い記事が出てきたため実際にやってみました。
まだ検証レベルなので細かい設定ができているか不安ではありますが実際にアプリケーションとの連携をしてみてさらなる検証を進めてみます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0