Postmanで認証ありのAPIを叩けるように設定してみた
チーム開発でPostmanを使い、認証が必要なAPIを使ってみた
バックエンドのAPIのチーム開発に、PostmanのWEB版を使用してみました。
その際に、認証が必要なAPIについて、実装に手を加えることなく、Postmanで認証できるようにしてみました。
今回はAPIの認証にJWTを使いました。
Postmanとは
APIのテストをおこなうためのツールで、手早くHTTPリクエストを送信してエンドポイントが正しく機能しているか確認することができます。
Postmanの認証機能
APIを使っていると認証しないと使えないもの出てきます。
その場合ログインしているユーザーであるとかAPIの使用許可を得たユーザーであるなどの認証をさせなければいけません。
Postmanでは認証機能をサポートしています。
JWT (JSON Web Token) とは
JWTとはJSON Web Tokenの略です。
JSONとはJavaScript Object Notationの略で、JavaScriptのオブジェクトの構造を持ったデータフォーマット。
Tokenとはユーザーを識別するための認証情報。
つまりJWTとは、JavaScriptのオブジェクトの形をした認証情報のことです。
Postmanの設定
認証のAPIを用意
JWTを返すAPI認証を用意します。
今回はPostmanに設定するところをご紹介するため、こちらに説明は割愛させていただきます。
authTokenがJWTnとなります。
・戻り値
※authoToken、refreshTokenはダミーです。
{
"loginUser": {
"loginId": "murofushi",
"name": "室伏"
},
"authToken": "authtoken0987654321",
"expiresAt": 1675777388,
"refreshToken": "refreshtokentest12345667890"
}
認証のAPIで取得したトークンをPostmanに設定
Postmanの設定画面で、認証のAPIを開きます。(今回はログインのAPI)
認証のAPI画面でTestを開き、APIで取得した結果を、Postmanの環境変数に設定します。
// APIで取得した結果をパース
var data = JSON.parse(responseBody);
// 取得したJWTを環境変数に設定(clearで一旦消去している)
postman.clearGlobalVariable("authToken");
postman.setGlobalVariable("authToken", data.authToken);
postman.clearGlobalVariable("refreshToken");
postman.setGlobalVariable("refreshToken", data.refreshToken);
取得したJWTを、認証が必要なAPIに設定
認証が必要なAPIを開き、Authorizationタブを開き、
TypeにBearerTokenを選び、Tokenに{{authToken}}を記述します。
いざ実行!!
認証付きのAPIでも、無事に実行できるようになりました。
ちなみに、上記の設定をしない場合は、エラーとなります。
まとめ
難しい手順なく、簡単に設定できるのが非常に良いと感じました。
特に実装を変更することなく、そのまま認証ありのAPIを使用できるのは非常にありがたいです。
ただ、毎回認証のAPIを叩くのもちょっと手間に感じるので、そのあたり省略する手順などあれば、さらに良いと思いました。
また、今回チーム開発で初めてPostmanのWEB版を触ってみて、
各々が使用したAPIのリクエストを簡単に共有でき、プルリクのレビューの時などで利用でき、とても便利に感じました。
Discussion
認証ありのAPI設定、参考になります!JWTの認証が絡むと設定がややこしくなりがちですが、Postmanで環境変数を使えばスムーズに管理できますね。私も以前、EchoAPIというオフライン対応のツールで認証付きAPIを試したことがあり、特にオフラインでも使えるのが便利でした。PostmanのWeb版は共有にも向いているし、柔軟に設定できる点がいいですよね。共有ありがとうございます!