ちょっと話題の記事

Postman を複数環境で使う場合にアクセストークン取得方法を簡略化する

2019.03.10

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

こんにちは、川原です。

最近はずっと API サーバー開発に関する仕事をしています。ふとしたことから API リクエストツール(?)の Postman を試してみたのですが、これ、すごく便利ですね。便利すぎて吹き出しました。Postman という名前は結構前から知っていたのですが、なんでもっと前に試さなかったんだろう。。。

弊社のブログにも詳しい紹介記事が既にありました。完全にスルーしてました(ごめんなさい、ブログ執筆者の小室さん)。

というわけですが、このブログでは Postman の基本的な使い方は説明しません。それについては、上記リンク先のブログ記事の参照をおすすめします。 このブログ記事では、「開発環境」「ステージング環境」といった複数の環境で Postman を使う場合のアクセストークンの取得方法の簡略化を紹介したいと思います。

何に困ったの?

今携わっている API サーバー開発では認証・認可部分で Oauth2 を使っています。当然のごとく Postman は Oauth2 にも対応していて、下記のような感じでクライアントIDやクライアントシークレット等の認証に必要な情報を入れてボタンを押すだけで、アクセストークンの取得と HTTP ヘッダへのセットまで行ってくれます(マジ便利)。

リクエスト設定の「Authorization」タブから「TYPE」「Add to Authorization data to」を設定して、「Get New Access Token」ボタンを押して

「Request Token」ボタンを押すと、

アクセストークンを取得できる。「Use Token」ボタンを押すと、

取得したアクセストークンが Access Token にセットされる。

と、ここまでは完全に神だったのですが、アクセス先(環境)を切り替える時が面倒でした。 例えば、アクセス先を開発環境からステージング環境に変える場合を考えます。だいたいの場合、環境毎に別の認証サーバー(と認証情報)を用意していると思います。 なので、アクセストークンの切り替え(つまり、アクセストークンの再取得)が必要になります。 Postman の認証情報入力画面には前回取得時時の情報が保存されています。この場合ですと開発環境の「それ」です。が、今(=アクセス環境切り替え後)、必要としているのはステージング環境の「それ」です。 ということで、ステージング環境用のアクセストークンを取得するためには、ステージング環境用の認証情報を入力する必要がありますが、これが非常に面倒でした。認証情報を保存しているメモを開いて、そしてそれをコピペして、、、何度もアクセス先の切り替えが必要になってくると発狂します。えぇ、多分。

解決策

結論から述べますと、Postman に用意されている「環境変数」を活用し、認証情報入力画面では クライアントID等の直値ではなく環境変数名を入力するようにします。

このようにすることで、Postman が用意している「環境の切り替え」機能を利用し、認証情報の再入力を行うことなく、アクセストークンを再取得できます (Postman がアクセストークン取得処理の中で、環境変数の置換処理を実施して「環境」に対応する値を使ってトークンを取得してくれるようです)。

ただし、事前に環境の定義をしておく必要があります。が、これは環境変数の値を設定するだけの作業であり、最初に1回実施しておけばよい類のものです。

解決策の実施例

以下、解決策の実施例になります。

まず、最初に環境を定義をします。ここで認証情報に関する環境変数を作成します。ここでのポイントは、いずれの環境においても 同一の変数名 で環境変数を作成することです。変数値はそれぞれの環境に対応するものにします。

右上の歯車の「Mange Environments」ボタンを押し、

「Add」ボタンを押して環境定義入力画面で環境を定義します。

開発環境の定義内容。INITIAL VALUE の値は Postman のサーバーに同期されるらしいので1、念の為、シークレット情報は CURRENT VALUE だけに登録するようにしておき、Postman のサーバーにシークレット情報が同期(≒送信)されないようにします。

ステージング環境の定義内容。環境変数名(VARIABLE)は開発環境と同じ名前にします。

次に開発環境用のアクセストークンを取得します。 認証情報入力画面では、直値ではなく先に作成した環境変数名をセットしてアクセストークンをリクエストします。

右上にある環境のドロップダウンリストから開発環境を選択し、

認証情報入力画面で環境変数を入力し、「Request Token」ボタンを押します。 その際、環境変数は中括弧2つ({{``}})で囲む必要があります。環境変数と認識されると、文字がオレンジ色に変わります。 環境変数を入力した状態で「Request Token」ボタンを押すと開発環境用のアクセストークンを取得できます。このトークンを使って開発環境の API サーバーに対してごにょごにょアクセスします。

次に、Postman の環境を「ステージング環境」に切り替えます。

右上にある環境のドロップダウンリストからステージング環境を選択します。

そして、ステージング環境用のアクセストークンを取得します。ここでは認証情報の再入力は不要です。開発環境用のアクセストークン取得時に入力した環境変数名がそのままデフォルト値として表示されていますので、「Request Token」ボタンを押すだけです

開発環境用のアクセストークン取得時の情報がそのまま残っていますので、ここで「Request Token」ボタンを押すと、

ステージング環境用のアクセストークンを取得できますので、このトークンを使ってステージング環境の API サーバーに対してごにょごにょアクセスします。

おわりに

Postman をさわってみて「環境の切り替え」機能があることにはすぐにわかったので、アクセストークン取得時の認証情報入力も「環境の切り替え」と連動していい感じに省略できるんだろう、と高を括って探してみたのですがそれっぽい設定は見つけられませんでした。。 少し考えてみて、これなら行けるんじゃね?、と思ったのが上で紹介した内容になります。

API サーバーの開発している人はぜひ Postman を試してみて、その便利さを感じてみるとよいと思います!


  1. INITIAL VALUE CURRENT VALUEの隣にある「i」マークをマウスオーバーするとその旨の説明が表示されます。