4
1

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.

curlでAmazon CognitoのAPIにアクセスする

Last updated at Posted at 2022-08-08

What's?

AWS SDKやAWS CLIに頼らずに、HTTPでAmazon CognitoのAPIにアクセスできないかな?と思って調べていたら、どうやらできそうなのでメモ。

アクセスするAPIのリファレンス

こちらの一覧が対象です。

アクセス方法

以下の情報に沿って行います。

  • HTTPエンドポイント … https://cognito-idp.[リージョン].amazonaws.com
  • HTTPメソッド … POST
  • 付与する必要があるHTTPヘッダー
    • Content-Type: application/x-amz-json-1.1
    • X-Amz-Target: AWSCognitoIdentityProviderService.[アクション名]
  • HTTPボディ … APIに応じたJSON

サンプル(トークン更新)

サンプルとして、トークン更新を行ってみます。

使用するAPIは、こちら。

リフレッシュトークンを使って、アクセストークン、IDトークンを再取得する処理ですね。

この説明に沿って実施する感じになります。

ユーザープール API により新しい ID とアクセストークンを取得する際に、更新トークンを使用するには、API オペレーションの AdminInitiateAuth または InitiateAuth を使用します。AuthFlow パラメータの REFRESH_TOKEN_AUTH を渡します。認証パラメータの AuthParameters は、キーが "REFRESH_TOKEN" であり、値が実際の更新トークンであるキーバリューマップです。

X-Amz-Targetヘッダーの値は、AWSCognitoIdentityProviderService.InitiateAuthになります。

$ curl https://cognito-idp.ap-northeast-1.amazonaws.com \
  -XPOST \
  -H 'X-Amz-Target: AWSCognitoIdentityProviderService.InitiateAuth' \
  -H 'Content-Type: application/x-amz-json-1.1' \
  -d '{"ClientId":"[クライアントID]","AuthFlow":"REFRESH_TOKEN_AUTH","AuthParameters":{"REFRESH_TOKEN":"[リフレッシュトークン]"}}'

HTTPボディで送信するリクエストの内容は、InitiateAuthのリクエストパラメーターの説明を見るとよいでしょう。

結果。

{"AuthenticationResult":{"AccessToken":"[アクセストークン]","ExpiresIn":[有効期限(秒)],"IdToken":"[IDトークン]","TokenType":"Bearer"},"ChallengeParameters":{}}

おわりに

これで、Amazon CognitoのエンドポイントへAWS SDKやAWS CLIなしでもアクセスできそうですね。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?