1
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?

More than 1 year has passed since last update.

Amazon Cognito OAuth2.0 Client Credentials Grant 利用方法メモ

Posted at
  • Amazon CognitoでOAuth2.0 Client Credentials Grantを利用する方法をメモする

Client Credentials Grantとは

cognito_cc.png

  • OAuth2.0で定義されている認可フローの1つ
  • トークンエンドポイントにトークンリクエストを投げ、応答としてアクセストークンを受けとるフロー
    • ユーザー認証を行わず、クライアントアプリケーションの認証のみが行われる

Amazon Cognitoでの設定方法

ユーザープール、リソースサーバー、クライアント設定を行う

  1. Cognito ユーザープールを作成する
  2. アプリケーションの統合 -> リソースサーバーを作成する
    • リソースサーバー名
    • リソースサーバー識別子
    • カスタムスコープ
  3. アプリケーションの統合 -> ドメインを設定する
  4. アプリケーションの統合 -> アプリケーションクライアントを作成する
    • アプリケーションタイプ:秘密クライアント
    • クライアントのシークレット:クライアントシークレットを生成する
    • OAuth2.0許可タイプ:クライアント認証情報

動作確認

  • トークンリクエスト

    POST /oauth2/token HTTP/1.1
    Host: {ユーザープールドメイン}.auth.ap-northeast-1.amazoncognito.com
    Authorization: Basic Base64(アプリケーションクライアントID:アプリケーションクライアントシークレット)
    Content-Type: application/x-www-form-urlencoded
    Content-Length: 66
    
    grant_type=client_credentials&client_id={アプリケーションクライアントID}
    
  • トークンレスポンス

    {
        "access_token":"...",
        "expires_in":3600,
        "token_type":"Bearer"
    }
    
  • アクセストークンの構造

    ヘッダー部

    {
        "kid": "...",
        "alg": "RS256"
    }
    

    ペイロード部

    {
        "sub":"{アプリケーションクライアントID}",
        "token_use":"access",
        "scope":"{クライアントに指定されたカスタムスコープ}",
        "auth_time":1678174231,
        "iss":"{ユーザープールドメイン}/ap-northeast-1_...",
        "exp":"1678177831",
        "iat":"1678174231",
        "version":2,
        "jti":"....",
        "client_id":"{アプリケーションクライアントID}"
    }
    

    subclient_idにはアプリケーションクライアントIDが指定される

    scopeにはクライアントに設定したスコープが設定される

1
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
1
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?