Alternative Architecture DOJO

オルターブースのクラウドネイティブ特化型ブログです。

ゆうびんやさん、お認証(はい)んなさい。

この記事はオルターブース Advent Calendar 2022の21日目の記事です。

adventar.org


マウスポインターをよく見失うようになってきたので、大きさを一段階大きくしました。
老眼ルーキーの木本です。

毎年恒例のアドベントカレンダー。8日目を担当した加来が書いているように、このアドベントカレンダーは弊社社員にとって【鉄の掟】のひとつですので、1人の例外もなく全社員が参加します。

aadojo.alterbooth.com

ブログのようにまとまった文章からは、普段の会話やテキストチャットからはわからない「その人の知らない一面」が見え隠れするので、毎年その年に新しく仲間になったメンバーが書いたものを読むというのが楽しみでもあります。


しかし、鉄の掟により僕も書かなければならないので、楽しんでばかりもいられません。
僕の場合はだいたい「その年の仕事の中で印象に残っているもの」をネタにしているので、今年も「なにしたっけな~?」と振りかえってみたのですが、「そういえば、あのツールをよく使ったなぁ」と思い当たったものがあるので、それについて書きます。

そのツールとは・・・じゃじゃん!!

Postman!!

誰ですか、「いまさらかよ・・・」って言ったのは。

API開発をしている人にはもうすっかりお馴染みで「いまさら感」のあるPostmanですが、これから使いはじめるという方もまだまだ多いと思いますので、今回はそういった「Postman初心者」のアナタに向けて書きますよ。

そう、そこのアナタです。


Postmanというのは、ザックリ一言で言うと「API開発ツール」です。
設計、テスト、ドキュメント、モック作成、APIの共有など、様々なツールが統合されていますが、最も使用されているのはAPIを簡単に動作検証できる「API Client」ではないでしょうか。
というか、僕はほぼ「API Client」でAPIの動作を確認するという使い方しかしていません。

www.postman.com


弊社はマイクロソフトのクラウドソリューションプロバイダー(CSPパートナー)なのですが、そのパートナー業務をサポートするためのAPIがマイクロソフトからたくさん提供されています。本当にたくさんあります。マジでたくさんあります。

このパートナー向けAPIを利用するためにはいろいろと前準備が必要なのですが、実行するにあたってはAzure ADを使った認証(OAuth 2.0)が必要です。
具体的には「認証コードの取得→更新トークンの取得→アクセストークンの取得→APIの呼出」という手順が必要になりますが、以前はPowerShellでコマンドをぽちぽち打ってアクセストークンを取得→Postmanにコピペという作業を行っていました。
というのも、これまではたま~に「ちょっと動かしてみる」程度だったので、これでも許容範囲だったんですね。

でも連日、様々なAPIを検証しようとするとこれがもう面倒くさい。
そもそも「コマンドを打つ」という作業があまり得意じゃないので本当に面倒くさい。
あ~も~、ホントにメンドクサイ!!
めんどうくさいぞ~!!と叫びながらググってみたら、Postman様がアクセストークンを取得してくれることがわかりました。

前置きが長くなりましたが、今回はこのPostmanを使ったOAuth 2.0認証について書きます。
※マイクロソフトのパートナー向けAPIの利用を前提にはしていますが、要は「Azure ADを使ったOAuth 2.0認証 with Postman」な話です。


Azure ADへのWebアプリ登録

まず大前提として、Azure ADへのアプリケーション登録が必要となります。
アプリケーションの登録方法については、下記のドキュメントを参考にしてください。

learn.microsoft.com

で、ワタクシ、ここでいきなり躓きました・・・
アプリケーションを登録する時にリダイレクトURIを設定するんですが、Postmanで認証をする場合になにを設定したらいいのかわからない。
わからないぞ~!と叫びながらググってみたら、Postmanの公式ドキュメントに書いてありました。(最初に読むべし。)

https://learning.postman.com/docs/sending-requests/authorization/#requesting-an-oauth-20-tokenlearning.postman.com

ここには黙って"https://oauth.pstmn.io/v1/browser-callback"を設定しましょう。


Postmanで必要になる情報をメモする

アプリ登録が終わったら、この後のPostmanでの設定に必要な情報をコピペしてメモしておきましょう。
まずは「アプリケーション(クライアント)ID」(①)。


次はエンドポイント。
「エンドポイント」をクリックすると各種エンドポイントが表示されますので、「OAuth 2.0 承認エンドポイント (v1)」(②)と「OAuth 2.0 トークン エンドポイント (v1)」(③)を控えておきます。


最後にクライアントシークレット(④)。
「証明書とシークレット」を開いて「新しいクライアントシークレット」をクリックして作成。画面遷移してしまうと二度と見られなくなるので「値」を確実にコピーしておきましょう。

これでAzure AD側の準備は完了です。


Postmanで認証する

それではPostmanでOauth 2.0認証を行うための設定をしていきましょう。
※この記事では、Postman Version 10.5.8を使用しています。


認証するための設定を行う

Postmanを開き、[Collection]を作成・選択すると、Collection内のリクエストで利用される共通設定の画面が表示されます。


その画面の中で[Authorization]タブをクリックして開き、以下のように設定します。

  • Type:Oauth 2.0
  • Add auth data to:Request Headers
  • Header Prefix:Bearer

[Access Token]が空になっていますが、ここに後ほど取得するアクセストークンが設定されるので今は空のままでOK。


その下に、以下のようなメッセージが表示されていると思います。
「Edit token configuration」をクリックして、認証に必要な情報を設定していきましょう。


[Configure New Token]にはふたつのタブがありますが、まず[Configuration Options]タブから以下の通りに設定していきましょう。

  • Token Name:お好きな名前をどうぞ。
  • Grant Type:Authorization Code
  • Callback URL:https://oauth.pstmn.io/v1/browser-callback
  • Auth URL:先ほど取得した「OAuth 2.0 承認エンドポイント (v1)」(②)
  • Access Token URL:先ほど取得した「OAuth 2.0 トークン エンドポイント (v1)」(③)
  • Client ID:先ほど取得した「アプリケーション(クライアント)ID」(①)
  • Client Secret:先ほど取得した「クライアントシークレット」(④)
  • Scope:openid
  • Client Authentication:Send as Basic Auth header

※わかりやすくするために、ここではClient IDとClient Secretに値を直接入力していますが、実際にはEnvironments(環境変数)に設定して利用しましょう。Environmentsで設定した方がよりセキュアに管理できますし、本番環境やテスト環境など実行環境を変更してアクセストークンを取得しなおす場合もEnvironmentsを切り替えるだけで対応できます。
Environmentsについては、以下の公式ドキュメントをご覧ください。
https://learning.postman.com/docs/sending-requests/managing-environments/learning.postman.com


続いて、[Advanced Options]タブを開いて[Resource]を設定します。
これはトークンが使用される予定のリソースまたはターゲットサービスを示すURIです。
今回利用するマイクロソフトのパートナー向けAPIの場合は "https://api.partnercenter.microsoft.com" と入力します。

必要な設定はこれでおしまいです。


アクセストークンを取得する

では、いよいよアクセストークンを取得してみます。
「Get New Access Token」をクリックすると、認証画面が出てくるのでサインインしましょう。

サインインが完了し、アクセストークンが取得できたら以下のダイアログが表示されます。

「Proceed」をクリックする(もしくは5秒間放置する)と取得されたアクセストークンが表示されます。


右上にある「Use Token」ボタンをクリックすると、先ほどまで空っぽだった[Access Token]に、いま取得したばかりのアクセストークンがセットされ、Collectionの中に作成されているリクエストでこのアクセストークンを利用できるようになります。
※その横にある「Sync Token」ボタンは取得したアクセストークンをチーム内で共有するためのボタンなので、今回は押さなくて大丈夫です。

以後アクセストークンを取得したい場合は、この手順を行うだけでOK。
ボタンをポチっとするだけでアクセストークンを取得することができるようになりました。


取得したアクセストークンをリクエストで利用するには、リクエストの[Authorization]タブにある[Type]を「Inherit auth from parent」にしておくだけ。

Collectionの中にあるリクエストの[Headers]タブを確認すると、ヘッダー情報に「Authorization」が自動追加され、取得したアクセストークンがセットされていることがわかります。


以上が、PostmanでAPI実行する際にAzure ADでOAuth 2.0認証を行う方法です。
たったこれだけで「コマンドぽちぽちェ・・・」から「ボタンぽち~!!(ファンファーレ)」になって充実のAPIライフが送れるようになるんですから最高ですよね。
GUI万歳!!

最後までお読みいただきありがとうございました。


オルターブースの【鉄の掟】アドベントカレンダーは残り4日! adventar.org