Amazon Cognitoとは
一言で言うと、アプリケーションの認証・認可を提供したサービスです。
以下AWS公式説明引用。
Amazon Cognito は、ウェブアプリケーションやモバイルアプリケーションの認証、許可、ユーザー管理に対応しています。ユーザーは、ユーザー名とパスワードを使用して直接サインインするか、Facebook、Amazon、Google、Apple などのサードパーティーを通じてサインインできます。
Cognitoでできること
大きく分けるとサインアップ・サインイン機能の提供、ユーザのアクセスコントロールの管理が行えます。
「Email+パスワード」や「ID+パスワード」などの一般的なサインアップ・サインインだけではなく、ソーシャルIDプロバイダやエンタープライズIDプロバイダを利用してのサインインも利用できます。
機能
ユーザプール・IDプールを用いたユーザの認証認可管理が主な機能です。
- ユーザプール
- Cognitoで認証したユーザのディレクトリ。
- 認証したユーザにはトークンが発行され、このトークンで認証処理が行われる。
- Oauth2.0,OpenID Connect,SAML2.0などのアクセス管理標準をサポートする。
- IDプール
- ユーザに対する認可の管理。
- ユーザ一意のIDを作成し、IDプロバイダに連携させられる。
- IAMroleと紐づけて、他AWSサービスへのアクセスの認可を管理する。
- 認証したユーザだけではなく、未認証ユーザ(ゲストユーザ)にも一時認証を提供できる。
ユーザプールとIDプールは同時に使用することも、別々に使用することもできます。
AWS公式が示している「同時に使用する場合の一般的なシナリオ」は以下です。
- 最初のステップでは、アプリのユーザーはユーザープールを介してサインインし、認証が成功するとユーザープールトークンを受け取ります。
- 次に、ID プールを使用して AWS 認証情報のユーザープールトークンを交換します。
- 最後に、アプリのユーザーはこれらの AWS 認証情報を使用して Amazon S3 や DynamoDB などの他の AWS サービスにアクセスできるようになります。
Amazon Cognito Sync
ユーザに対してデータストレージを提供し、異なるデバイス間でもユーザデータを同期できるサービスです。
公式説明参照
Amazon Cognito Sync は、アプリケーション関連のユーザーデータのデバイス間の同期を有効にする、AWS サービスとクライアントライブラリです。これを使用して、独自のバックエンドを必要とせずにモバイルデバイスとウェブ間でユーザープロファイルデータを同期できます。クライアントライブラリはローカルにデータをキャッシュするため、アプリはデバイスの接続状態にかかわらず、データを読み書きすることができます。デバイスがオンラインのときは、データを同期し、プッシュ同期を設定すると、アップデートが利用できることが他のデバイスにすぐに通知されます。
同様のサービスとしてAWS AppSyncというものもあります。
AppSyncのほうが高性能の為、新規サービス立ち上げの際にはAppSyncの利用を推奨しているようです。
まとめ
ウェブアプリ・モバイルアプリの面倒くさいユーザ管理を任せられる良いサービスだと思います。
特に、モバイルアプリ開発の際はAWS Amplifyとの親和性が高く、使い勝手が良いと思います。