概要
Amazon CognitoはAWSのフルマネージメンドサービスの1つです。
アプリ開発者に取って、重要項目の1つである「ユーザー管理」「データ同期」の部分を担当してくれます。
Cognitoを利用すれば、TwitterやFacebook等のユーザーIDを利用して、ユーザーに対して一意のIdnetityを発行したり、ユーザーが複数所有するモバイル端末のデータを同期する機能が利用できます。
Identityを発行されたユーザーは、IAMロールで定義されたAWSの各種リソースにアクセス可能になります。
用語
Idnetity
各ユーザーに割り振られる識別ID(CognitoID)
Identity Pool
- CognitoがIdentityを管理する事。
- 1つのIdentity Poolを複数のアプリケーションに紐付ける事も可能。
- アプリケーション毎に異なるIdentity Poolを使用している場合は、同じユーザーがアプリケーション毎に異なるIdentityを持つ事になる。
External Identity Providers
- Cognitoで認証ユーザーとしてIdentityを発行する為に使われる認証サービスの意味。
- パブリックログインプロバイダ
- アイデンティティプロバイダ
- Amazon, Facebook, Twitter, Google, OpinID Connect
Developer Authenticated Identities
- 開発者が運用または利用できる独自の認証サービス。
- External Identity Providersは一般公開されている認証サービスだが、独自の認証サービスもCognitoで利用できる。
同期ストア
- 発行されたIdentityに紐付けられた キー/値 のペアのストア。
- Identity毎に独自のユーザー情報ストアがある。
Identityによるユーザー認証
Identityを発行されたユーザーは認可ユーザーとなる。
- IAMロールで定義されて許可されたAWSリソースへのアクセスが可能になる。
- Cognitoの同期ストアが利用可能になる。
Identityの発行の種類
- 未認証ユーザーとして発行。
- パブリックログインプロバイダ等のユーザーIDと紐付けて発行。
- 独自の認証サービスを構築してユーザーIDと紐付けて発行。(User Pool)
External Identity Providersを利用した認証ユーザーの場合
- 認証サービス(Facebook, Twitter etc...)のユーザーIDを元に、CognitoがIdentityを発行する方法。
- Enhanced Authflow
- Basic Authflow
Enhanced Authflow
- OpenID Tokenの取得
- Facebook等の認証サービスから OpenID Token を取得する。
- Get ID
- OpenID Tokenから Identity を発行する。
- GetCredentialsForIdentity
- 2.で取得したIdentityから、AWSリソースへアクセスする為の Credential を取得する。
-
Credential
- 一時的セキュリティ認証情報
- AWSリソースに一時的にアクセスする為に利用。
-
Credential
- 2.で取得したIdentityから、AWSリソースへアクセスする為の Credential を取得する。
- AWSリソースにアクセスする。
- 3.で発行されたCredentialを利用して、AWSリソースにアクセスする。
未認証ユーザーの場合
ゲストユーザーの管理も行える。
未認証ユーザーから認証ユーザーに更新する事も可能。
未認証ユーザーとして利用していたアプリケーションがパプリックログインプロバイダでログインした場合に、自動的に認証ユーザーとなる仕組みもある。
Amazon Cognito Syncによる同期ストアの利用
Identityを発行されたユーザーは、Cognitoが提供する同期ストアを利用できる。
1人のユーザーが複数の端末を持っている場合に、設定値等を全ての端末で同期させる時に利用する。
ユーザーの設定値をDBで管理する必要がなくなるので便利。
同期オペレーション(データ同期)
- AWS Mobile SDKを使用してsynchronizeメソッドを呼び出すとき。
- CognitoのAPIを直接呼び出して書き込み成功またはタイムアウトになったとき。
Push Sync(プッシュ同期)
- Amazon SNSとSilent Pushという仕組みを利用して、アプリのデータを同期させる事ができる。
Cognito Streams
Amazon Kinesisを利用してデータをストリームする事ができる。
Cognito Events
Cognitoの各種イベントを検知して、Lambdaを実行できる。
料金
項目 | 容量/回数 |
---|---|
同期ストア容量 | 1GBにつき |
同期オペレーション | 1万回につき |
Cognitoのイベントを使用して、Lambdaの関数を実行する場合、Cognitoの追加料金は発生しない。
(Lambda実行の料金は発生する。)
終わり
とりあえず、概要と用語に関してはこんな感じです。(User Poolに関しては未調査)
次回は、実践編で実際にCognitoを使ってみたいと思います。