LoginSignup
45
11

More than 5 years have passed since last update.

AWS Cognito 概要・用語 編

Posted at

概要

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

  1. OpenID Tokenの取得
    • Facebook等の認証サービスから OpenID Token を取得する。
  2. Get ID
    • OpenID Tokenから Identity を発行する。
  3. GetCredentialsForIdentity
    • 2.で取得したIdentityから、AWSリソースへアクセスする為の Credential を取得する。
      • Credential
        • 一時的セキュリティ認証情報
        • AWSリソースに一時的にアクセスする為に利用。
  4. 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を使ってみたいと思います。

45
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
45
11