fluid_27’s blog

勉強した内容をアウトプットするためのブログ

AWS Cognitoとは

SAAに向けた勉強で、ザックリと概念や機能を知りたかったので、まとめてみました。

 

 

Cognito (コグニート)とは

ウェブアプリケーションやモバイルアプリケーションの認証、許可、ユーザー管理に対応しています。ユーザーは、ユーザー名とパスワードを使用して直接サインインするか、FacebookAmazonGoogleApple などのサードパーティーを通じてサインインできます。                        

Amazon Cognito とは - Amazon Cognito

 

つまり、ウェブアプリケーションおよびモバイルアプリに素早く簡単にユーザーのサインアップ/サインイン、アクセスコントロールの機能を追加できるサービスということみたいです。

 

Cognitoの2つのコンポーネント 

  • ユーザープール
  • IDプール

 

ユーザープール

アプリユーザーのサインアップとサインインオプションを提供するユーザーディレクトリです。

 

ID プール

AWS の他のサービスに対するアクセスをユーザーに許可します。ID プールとユーザープールは別々に使用することも、一緒に使用することもできます。

 

基本的に上記2つのコンポーネントで構成されているみたいです。

 

 

ユースシナリオ

パターンA: ユーザーを認証し、AWS の他のサービスに対するアクセスをユーザーに許可する。という場合

  1. ユーザーはユーザープールを介してサインインする。認証が成功するとユーザープールトークンを受け取る。

  2. ID プールを使用して AWS 認証情報のユーザープールトークンを交換する。

  3. ユーザーはこれらの AWS 認証情報を使用して Amazon S3 や DynamoDB などの他の AWS サービスにアクセスできるようになる。

f:id:fluid_27:20210623015607p:plain

こうして、流れをみてみると結構シンプルですね。

サインインして、ユーザープールトークンを受け取り→ IDプールでユーザートークンと交換する。そのユーザートークンでAWSリソースにアクセスできるようになる。

という流れですね。

 

他のユースシナリオに関しても公式ドキュメントで説明されてます。

docs.aws.amazon.com

 

 

それぞれのコンポーネントの機能

また、それぞれの機能・サポートするプロバイターは以下の通りです。

 

ユーザープール
  • サインアップおよびサインインサービス。

  • ユーザーがサインインするための組み込みのカスタマイズ可能なウェブ UI。

  • FacebookGoogle でのソーシャルサインイン、Login with AmazonSign in with Apple、ユーザープールからの SAML および OIDC ID プロバイダー経由のサインイン。

  • ユーザーディレクトリとユーザープロファイルの管理。

  • 多要素認証 (MFA) などのセキュリティ機能、漏洩した認証情報のチェック、アカウントの乗っ取り保護、電話と E メールによる検証。

  • カスタマイズされたワークフローと AWS Lambda トリガーによるユーザー移行

 

IDプール
  • Amazon Cognito ユーザープール

  • FacebookGoogle でのソーシャルサインイン、Login with AmazonSign in with Apple

  • OpenID Connect (OIDC) プロバイダ

  • SAML ID プロバイダー

  • 開発者が認証した ID

 

 

Cognitoの特徴

世界中のリージョンで利用可能であり、各リージョンで複数AZに分散されています。

また、低レイテンシーで高スループットの冗長性に優れたプライベートネットワーク接続で統合されています。

使用できるリージョンについては下記で参照してください。

docs.aws.amazon.com

 

 

用語

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

https://www.acrovision.jp/service/aws/?p=2568