PostmanでのスマートなOAuth認証
概要
API開発をするのには必須ツールとも言えるPostmanですが、さまざまな便利設定ができるものの全て使いこなせていたわけではありませんでした。
そのうちの1つである、OAuthを便利にしてくれる方法を最近設定してみたのでメモです。
参考
(※ ただ2024年1月時点で、うまくいかないパターンもありそうでした。 後述。)
やりかた
コレクションの「認証」タブで以下のように設定しておきます。
新しいトークンの設定
以下のように設定します。(Grantタイプが認可コード(PKCE)の場合)
変数になっている値は、Cognitoの場合は以下です。
- 認可URL:
https://ユーザープールのドメイン/oauth2/authorize
- アクセストークンURL:
https://ユーザープールのドメイン/oauth2/token
- クライアントID: Cognito「アプリケーションの統合」で設定したクライアントのID
参考
トークンの取得
ここまで設定できたら、あとは最下部の「新しいアクセストークンを取得」ボタンを押下します。
ブラウザが立ち上がるのでID/パスワードを入力し、認証に成功したら自動的にPostmanにリダイレクトされます。
このような画面になるので、 "Use Token" でこのトークンを使用するように設定します。
※サイドバーで斜線がついているものは有効期限切れのトークンなので、ここでそれらを削除することもできます。
トークンの取得・設定が完了すると "現在のトークン" セクションがこのようになります。
(API認証に利用したいトークンタイプは アクセストークン or IDトークンを選択できます)
これでコレクション配下のAPIリクエストにはデフォルトでこの認証が使用されるので便利ですね👏
トークンのリフレッシュ
トークンの有効期限が切れるとこのような表示になって教えてくれます。
手動の場合は横の "リフレッシュ" 押下か、「自動リフレッシュトークン」の設定をONにしていればAPIリクエスト時に自動的にリフレッシュしてくれるはずです。
めっちゃ素敵機能💖
・・なんですが、なぜかこれが現状うまく動かないようでした😢(2024年1月現在)
当時の状態
こちらにIssueが上がっています。
Issueと同様に詳細設定を追加している状態ですが、コンソールを見てみるとトークンリフレッシュ時のリクエストヘッダーにBasic認証が追加されているようです。
レスポンスは以下のように返されてしまいます。
{"error":"invalid_client"}
今後のアップデートで修正されることを期待します・・!
✍️ 2024年2月追記
コメントいただいた通り、詳細設定を追加してから「新しいアクセストークンを取得」すると期限切れ時に自動的にリフレッシュしてくれるようになりました🎉
ただ「環境」を変更しても、変数で代入しているリフレッシュトークンURLが切り替わらないようだったのでそこは注意です👀
選択しているトークンの refresh_token_url
が使用されるようでした。
まとめ
一度設定してしまえばかなり楽に開発が行えるので便利です。
またチームメンバーと設定を共有することもできるはずなので、今後はそれらも活用していきたいです🏔️
Discussion
詳細設定のリフレッシュリクエストにclient_idパラメータの設定を追加した後に、新しいトークンを取得してから自動リフレッシュもしくは手動でリフレッシュリンクをクリックしてリフレッシュリクエストを送信してみてください。
こちらの、issueコメントで言われているように、詳細設定での変更をリフレッシュリクエストに反映させるには、新しいトークンを取得する必要があるようです。
ありがとうございます!
自動リフレッシュで運用できるようになりました✨