ぶろぐ

日記です

curlでcognito oauth2認証


久しぶり、かつpythonで実装して超めんどくさかったのでメモ。
はまらなければすぐできると思う。

Authorization Code Grantの流れ
  • cognito hosted uiでログイン
  • サーバーのアプリでredirectを受け付ける
  • 認可コードをtoken endpoint(xxxx.amazoncognito.com/oauth2/token)に送る
  • id_token, refresh_token, access_tokenを取得
  • 有効期限が切れたら refresh_token を使用して token をrefresh

docs.aws.amazon.com

この辺を見れば分かる

token取得
curl -X "POST" "https://{domain}.auth.us-east-1.amazoncognito.com/oauth2/token" \
     -H 'Content-Type: application/x-www-form-urlencoded' \
     --data-urlencode "grant_type=authorization_code" \
     --data-urlencode "client_id=xxxxx" \
     --data-urlencode "client_secret=xxx" \
     --data-urlencode "code=xxxx" \
     --data-urlencode "redirect_uri=https://{redirect_url}"
token refresh
curl -X "POST" "https://{domain}.auth.us-east-1.amazoncognito.com/oauth2/token" \
     -H 'Content-Type: application/x-www-form-urlencoded' \
     --data-urlencode "grant_type=refresh_token" \
     --data-urlencode "client_id=xxxx" \
     --data-urlencode "client_secret=xxxx" \
     --data-urlencode "refresh_token=xxxx"

optionalでnonceも送る。