Cognitoを使ったSAML認証する際の用語整理

Cognitoを認証基盤としてSaaSGoogleアカウントでログインさせる際の仕組みがよくわかっていなかったので、関連用語から整理します。

User Pool

CognitoのUser Poolはユーザーの認証を管理するディレクト

  • ユーザー名・メールアドレス・パスワードなどの情報を保持する
  • SAMLOpenID Connectで外部IdP(Googleアカウントなど)を使う場合、User Poolは「どのIdPを認証に使うか」を知っておく必要がある.

Identity Provider(IdP)

IdPは実際にユーザーの認証を行うサービス - GoogleアカウントがIdPの場合、SAML認証でGoogleが「このユーザーは正しい」とCognitoに返す情報(Assertion)に基づいて、SaaSにログインできる.

User Pool Client

User Pool ClientはCognito User PoolとSaaSアプリをつなぐ窓口.

  • クライアントIDを持っていて、アプリがCognitoにログイン要求を送る時に使う.
  • このクライアントに対して、どのIdPを使うか(Googleなど)、どの認証フローを許可するか(SAMLOpenID Connectなど)を設定する.
  • Callback URL: 認証後、ユーザーがSaaSに戻るURL.
  • Logout URL: ログアウト後にユーザーを遷移させるURL.

Identity Pool

Identity Poolは通常、認証後のユーザーにAWSリソースへのアクセス件を付与する仕組みで、SaaSログインにも使える.

  • Cognitoで認証したユーザーの情報を、SaaSアプリ側で受け取りログイン済みユーザーとして扱うことが可能になる.

Googleアカウントを使う場合のSAMLフロー

  1. SaaSアプリ(User Pool Client)がCognitoのHosted UIにリダイレクト.
  2. ユーザーがGoogleアカウントでログイン.
  3. GoogleSAML AssertionをCognitoに返す.
  4. CognitoがUser Pool ClientのCallback URLにユーザーを戻す.
  5. SaaSアプリ側でユーザー情報を受け取りログイン完了.

なんとなく仕組みはわかってきたので手を動かして検証もしてみます。