0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Cognito ユーザープールクライアント(User Pool Client)とは?(メモ)

Posted at

Cognito ユーザープールクライアント は、Cognito ユーザープールとアプリケーション(Web、モバイル、バックエンド)を接続するための設定 です。

ユーザープールクライアント(User Pool Client)= ユーザープールを利用するアプリケーションの「アクセス設定」
これを作成することで、アプリが Cognito に対して認証やトークンの取得を実行できるようになります。


1. ユーザープールクライアントの役割

Cognito ユーザープールクライアントは、アプリケーションが Cognito にアクセスするための「入口」 です。
具体的には、以下のようなことを設定できます。

アプリケーションがどの認証フローを使うか
アクセストークン・リフレッシュトークンの有効期限
クライアントシークレットの有無
認証フロー(パスワード認証、OAuth、SRP など)
Cognito のホスト型 UI(ログイン画面)の利用可否


2. ユーザープールクライアントが必要な理由

Cognito には「ユーザープール」があり、ユーザーの情報を管理できますが、そのままではアプリケーションからアクセスできません。

💡 ユーザープールクライアントを作成することで、アプリケーションが Cognito に認証リクエストを送信できるようになる!

例えば、以下のような用途で使われます。

用途 必要な設定
Webアプリ(SPA、React、Vue) GenerateSecret: false(シークレットなし)
モバイルアプリ(iOS / Android) ExplicitAuthFlows: ALLOW_USER_SRP_AUTH
サーバーサイドアプリ(バックエンド API) GenerateSecret: true(クライアントシークレットあり)

3. CloudFormation でユーザープールクライアントを作成

CloudFormation を使って ユーザープールクライアント を作成する場合、AWS::Cognito::UserPoolClient を定義します。

Resources:
  CognitoUserPoolClient:
    Type: AWS::Cognito::UserPoolClient
    Properties:
      ClientName: MyWebAppClient
      UserPoolId: !Ref CognitoUserPool
      GenerateSecret: false
      ExplicitAuthFlows:
        - ALLOW_USER_SRP_AUTH
        - ALLOW_REFRESH_TOKEN_AUTH

4. ユーザープールクライアントの主な設定

設定項目 説明
ClientName クライアントの名前(例: WebAppClient)
UserPoolId どのユーザープールに関連付けるか
GenerateSecret true: クライアントシークレットあり(サーバー向け)
false: シークレットなし(フロントエンド向け)
ExplicitAuthFlows 許可する認証フロー(パスワード認証、SRP など)
RefreshTokenValidity リフレッシュトークンの有効期限(日数単位)

5. どの認証フローを使うべきか?

ユーザープールクライアントの設定は、利用するアプリの種類に応じて変わります。

アプリの種類 推奨設定
Webアプリ(SPA / JavaScript) GenerateSecret: false(シークレットなし)
モバイルアプリ(iOS / Android) ExplicitAuthFlows: ALLOW_USER_SRP_AUTH
バックエンド(API サーバー) GenerateSecret: true(シークレットあり)

6. 実際の認証フロー

  1. フロントエンドアプリ(React, Vue, Angular など)

    • Cognito ホスト UI でユーザーがログイン
    • IDトークン(JWT) を取得し、API Gateway に送信
    • API Gateway が Cognito でトークンを検証
    • 認証成功ならバックエンドの Lambda を呼び出し
  2. モバイルアプリ(iOS / Android)

    • ALLOW_USER_SRP_AUTH を使ってログイン
    • Cognito からトークンを取得し、アプリ内で保持
    • API Gateway にトークンを送信して認証
  3. バックエンド(サーバー側)

    • GenerateSecret: true にして、クライアントシークレットを使用
    • OAuth2 のクライアント認証でアクセストークンを取得
    • 他のマイクロサービスと連携して認証を処理

7. まとめ

🔹 Cognito ユーザープールクライアント は、Cognito ユーザープールとアプリをつなぐ重要な設定。
🔹 アプリの種類に応じて、認証フローを適切に設定することが重要!
🔹 CloudFormation では AWS::Cognito::UserPoolClient を使って定義できる。

🎯 適切な設定を行い、Cognito を活用した認証基盤を構築しましょう! 🚀

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?