SAAに向けた勉強で、ザックリと概念や機能を知りたかったので、まとめてみました。
Cognito (コグニート)とは
ウェブアプリケーションやモバイルアプリケーションの認証、許可、ユーザー管理に対応しています。ユーザーは、ユーザー名とパスワードを使用して直接サインインするか、Facebook、Amazon、Google、Apple などのサードパーティーを通じてサインインできます。
つまり、ウェブアプリケーションおよびモバイルアプリに素早く簡単にユーザーのサインアップ/サインイン、アクセスコントロールの機能を追加できるサービスということみたいです。
Cognitoの2つのコンポーネント
- ユーザープール
- IDプール
ユーザープール
アプリユーザーのサインアップとサインインオプションを提供するユーザーディレクトリです。
ID プール
AWS の他のサービスに対するアクセスをユーザーに許可します。ID プールとユーザープールは別々に使用することも、一緒に使用することもできます。
基本的に上記2つのコンポーネントで構成されているみたいです。
ユースシナリオ
パターンA: ユーザーを認証し、AWS の他のサービスに対するアクセスをユーザーに許可する。という場合
-
ユーザーはユーザープールを介してサインインする。認証が成功するとユーザープールトークンを受け取る。
-
ユーザーはこれらの AWS 認証情報を使用して Amazon S3 や DynamoDB などの他の AWS サービスにアクセスできるようになる。
こうして、流れをみてみると結構シンプルですね。
サインインして、ユーザープールトークンを受け取り→ IDプールでユーザートークンと交換する。そのユーザートークンでAWSリソースにアクセスできるようになる。
という流れですね。
他のユースシナリオに関しても公式ドキュメントで説明されてます。
それぞれのコンポーネントの機能
また、それぞれの機能・サポートするプロバイターは以下の通りです。
ユーザープール
-
サインアップおよびサインインサービス。
-
ユーザーがサインインするための組み込みのカスタマイズ可能なウェブ UI。
-
Facebook、Google でのソーシャルサインイン、Login with Amazon、Sign in with Apple、ユーザープールからの SAML および OIDC ID プロバイダー経由のサインイン。
-
ユーザーディレクトリとユーザープロファイルの管理。
-
多要素認証 (MFA) などのセキュリティ機能、漏洩した認証情報のチェック、アカウントの乗っ取り保護、電話と E メールによる検証。
-
カスタマイズされたワークフローと AWS Lambda トリガーによるユーザー移行
IDプール
-
Amazon Cognito ユーザープール
-
Facebook、Google でのソーシャルサインイン、Login with Amazon、Sign in with Apple
-
OpenID Connect (OIDC) プロバイダ
-
SAML ID プロバイダー
-
開発者が認証した ID
Cognitoの特徴
世界中のリージョンで利用可能であり、各リージョンで複数AZに分散されています。
また、低レイテンシーで高スループットの冗長性に優れたプライベートネットワーク接続で統合されています。
使用できるリージョンについては下記で参照してください。
用語
SAMLとは
SAMLとは、Security Assertion Markup Languageの略称であり、OASISによって策定された異なるインターネットドメイン間でユーザー認証を行うための XML をベースにした標準規格です。AWS STSはSAML2.0などのオープンスタンダードをサポートしています。シングルサインオンを実現という要件からはSAML2.0を利用することが求められる
OPNE IDもサポートしていますが、これはSNSを利用したソーシャルログインを実現するための規格です。
シングルサインオンとは
シングルサインオン(SSO)とは、1組のID・パスワードによる認証を1度行うだけで、複数のWebサービス・クラウドサービス・アプリケーションにログインできるようにする仕組み。
参考記事
https://docs.aws.amazon.com/ja_jp/cognito/latest/developerguide/what-is-amazon-cognito.html