🧑‍🚀

PostmanでのスマートなOAuth認証

2024/01/26に公開
2

概要

API開発をするのには必須ツールとも言えるPostmanですが、さまざまな便利設定ができるものの全て使いこなせていたわけではありませんでした。
そのうちの1つである、OAuthを便利にしてくれる方法を最近設定してみたのでメモです。

参考

https://qiita.com/yokawasa/items/b4d89d983bfd23792788
約1年ほど前に、トークンの自動リフレッシュにも対応してくれたようです👏
(※ ただ2024年1月時点で、うまくいかないパターンもありそうでした。 後述。)

やりかた

コレクションの「認証」タブで以下のように設定しておきます。
認証タイプの設定

新しいトークンの設定

以下のように設定します。(Grantタイプが認可コード(PKCE)の場合)
新しいトークンの設定

変数になっている値は、Cognitoの場合は以下です。

  • 認可URL: https://ユーザープールのドメイン/oauth2/authorize
  • アクセストークンURL: https://ユーザープールのドメイン/oauth2/token
  • クライアントID: Cognito「アプリケーションの統合」で設定したクライアントのID

参考

https://docs.aws.amazon.com/ja_jp/cognito/latest/developerguide/federation-endpoints.html

トークンの取得

ここまで設定できたら、あとは最下部の「新しいアクセストークンを取得」ボタンを押下します。
ブラウザが立ち上がるのでID/パスワードを入力し、認証に成功したら自動的にPostmanにリダイレクトされます。

このような画面になるので、 "Use Token" でこのトークンを使用するように設定します。
トークンの選択
※サイドバーで斜線がついているものは有効期限切れのトークンなので、ここでそれらを削除することもできます。

トークンの取得・設定が完了すると "現在のトークン" セクションがこのようになります。
(API認証に利用したいトークンタイプは アクセストークン or IDトークンを選択できます)
現在のトークン

これでコレクション配下のAPIリクエストにはデフォルトでこの認証が使用されるので便利ですね👏

トークンのリフレッシュ

トークンの有効期限が切れるとこのような表示になって教えてくれます。
トークンの有効期限切れ

手動の場合は横の "リフレッシュ" 押下か、「自動リフレッシュトークン」の設定をONにしていればAPIリクエスト時に自動的にリフレッシュしてくれるはずです。

めっちゃ素敵機能💖

・・なんですが、なぜかこれが現状うまく動かないようでした😢(2024年1月現在)

当時の状態

こちらにIssueが上がっています。
https://github.com/postmanlabs/postman-app-support/issues/12110

Issueと同様に詳細設定を追加している状態ですが、コンソールを見てみるとトークンリフレッシュ時のリクエストヘッダーにBasic認証が追加されているようです。
invalid_client

レスポンスは以下のように返されてしまいます。

{"error":"invalid_client"}

今後のアップデートで修正されることを期待します・・!

✍️ 2024年2月追記

コメントいただいた通り、詳細設定を追加してから「新しいアクセストークンを取得」すると期限切れ時に自動的にリフレッシュしてくれるようになりました🎉
詳細設定

ただ「環境」を変更しても、変数で代入しているリフレッシュトークンURLが切り替わらないようだったのでそこは注意です👀
選択しているトークンの refresh_token_url が使用されるようでした。
MANAGE ACCESS TOKENS

まとめ

一度設定してしまえばかなり楽に開発が行えるので便利です。
またチームメンバーと設定を共有することもできるはずなので、今後はそれらも活用していきたいです🏔️

Discussion

Yoichi KawasakiYoichi Kawasaki

詳細設定のリフレッシュリクエストにclient_idパラメータの設定を追加した後に、新しいトークンを取得してから自動リフレッシュもしくは手動でリフレッシュリンクをクリックしてリフレッシュリクエストを送信してみてください。
こちらの、issueコメントで言われているように、詳細設定での変更をリフレッシュリクエストに反映させるには、新しいトークンを取得する必要があるようです。
https://github.com/postmanlabs/postman-app-support/issues/11668#issuecomment-1549730280

osakanaosakana

ありがとうございます!
自動リフレッシュで運用できるようになりました✨