🕵️

Amazon Cognito入門

2023/10/25に公開

はじめに

仕事でCognitoを使うので、情報を整理しようと思います。

Amazon Cognitoとは

Cognitoは、Webアプリ・Mobileアプリ用の認証[1]・認可[2]機能を簡単に実装できるサービスです。

主に2つのコンポーネントがあり、どちらかを利用することも、どちらも利用することも可能です。

ユーザープール

  • 認証の設定を行う
  • 使った分の課金
  • Amazon Cognito経由でサインインする、もしくはサードパーティのIdP経由でフェデレートすることを可能にする

IDプール

  • 認可の設定を行う
  • サービスにアクセスするための一時的な認証情報を取得できる
  • 無料
  • AWSアカウント内のIAMポリシーとの統合方法は2つあり、どちらか利用する、もしくはどちらも利用することが可能
    • ロールベースアクセスコントロール
    • アクセスコントロールの属性

それぞれ詳しく説明していきます。

ユーザープール

先程説明した通り、認証機能実装するのがユーザープールです。
ユーザープール作成時に設定する項目は以下です。

  • フェデレーテッドIDプロバイダー(Facebook、Google等)の利用有無
  • Cognitoユーザープールサインインオプション(ユーザー名、Email等)
  • パスワードポリシー
  • MFAの有無
  • パスワードを忘れた際のアカウント復旧方法
  • 自己登録(新規ユーザー自らサインアップ)の可否
  • 属性検証とユーザーアカウント確認の方法(Cognitoが確認メッセージを自動送信or手動で確認)
  • 新規ユーザー作成に必要な属性(電話番号、メールアドレス等)
  • メール送信方法(Amazon SES、Amazon Cognito)、SMS送信方法
  • ユーザープール情報(ユーザープール名、ドメインタイプ、統合するアプリ名、コールバックURL)

IDプール

最初に説明した通り、認可機能を実装するのがIDプールです。
IDプール作成時に設定する項目は以下です。

  • 認証情報(どのIDプロバイダーで認証したのか(Cognitoユーザープール、Facebook等)、または未認証のゲストユーザーなのか)
  • 適用するIAMロール
  • IDプロバイダーの詳細情報(ユーザープールID、アプリクライアントID、ロール設定、ユーザーセッションとタグのマッピング)
  • IDプール情報(IDプール名、基本認証のアクティブ化、タグ)

おわりに

利用前の事前情報整理といったところなので、利用してみてわかったことがあれば随時更新していきます。

脚注
  1. 認証
    アプリを利用したい人がいた場合に「この人は誰なのか(正常なユーザーなのか)」を確認することです。認証方法にはSYK(Something you know)、SYH(Something you have)、SYA(Something you are)があります。それぞれの認証方法で具体的にはどんな情報が必要かは調べてみてください。 ↩︎

  2. 認可
    認証されたユーザーが「どの機能まで利用することが可能なのか」を確認し適切なアクセス権限を与えることです。認可は承認とも言われます。 ↩︎

Discussion