Postman を使った Web API テスト: Azure AD 連携したアプリケーションの Auth 2.0 トークン取得方法
最近 Postman を使って各種 Web API を試すことが多いんですが、Azure AD 連携のアプリケーションで OAuth 2.0 トークン取得をどうするのという話を何度か聞かれたのでまとめておきます。
利用するサービスはなんでもいいんですが、最近 UCWA よく触っているので UCWA でやってみましょう。他のサービスでやる場合は適当に読み替えてください。
尚、Azure AD の認証に関する詳細は、日本マイクロソフトエバンジェリスト松崎さんのブログをご覧ください。
https://blogs.msdn.microsoft.com/tsmatsuz/2012/09/01/azure-active-directory/
Skype for Business の準備
UCWA を使うにあたり、Office 365 E3 プランの申し込みから。既に環境ある人はスキップしてください。
1. https://products.office.com/ja-jp/business/office-365-enterprise-e3-business-software にアクセス
2. 「無料試用版」リンクをクリック。
3. ウィザードに従ってセットアップを進めます。大体 10 分くらいで完了します。
4. セットアップが完了したら、https://portal.office.com よりログインし、管理者アイコンをクリックします。
5. 検証するために、ユーザーを数名追加します。ユーザー | アクティブなユーザーよりユーザーの追加ボタンをクリックします。
6. 必須項目を埋めて、ユーザーを追加します。
7. 同様の手順でユーザーを数名追加しておきます。
8. Skype for Business にログインできるか試します。左上のワッフルメニューより「メール」を選択します。
9. 言語をタイムゾーンを選択してログインします。
10. 画面上部にある Skype アイコンをクリックして、Skype for Business ログインできるか確認します。
11. 画面右上のユーザーアイコンをクリックして、ステータスを変更して、正しく反映されることを確認します。
Azure AD への登録
UCWA を利用するためには、事前にアプリケーションを Azure AD へ登録する必要があります。
1. https://manage.windowsazure.com にログインします。Azure サブスクリプションが無い場合は、体験版をお試しください。
2. Active Directory を選択し、Office 365 に紐づくディレクトリを選択します。
3. 「アプリケーション」タブをクリックします。
4. 画面下にある「追加」をクリックします。
5. 「組織で開発中のアプリケーションを追加」を選択します。
6. 適当なアプリケーション名を入れ、「Web アプリケーションや WEB API」を選択して、次に進みます。
7. 「サインオン URL」に https://www.getpostman.com/oauth2/callback を入力します。アプリケーション ID は任意のもので OK です。
8. アプリケーションを作成したら、「構成」タブを開きます。
7. キーメニューで任意の年数を選択します。
8. 画面下にある「アプリケーションの追加」をクリックします。
9. Skype for Business Online を選択します。
10. 任意の権限を付与します。ここではすべて選びました。
11. 「保存」ボタンをクリックします。
12. キーの項目にパスワードが出るので取得します。また、クライアント ID も合わせて取得しておいてください。
13. 画面下にある「エンドポイントの表示」をクリックします。
14. 「OAUTH 2.0 トークンエンドポイント」と「OAUTH 2.0 承認エンドポイント」を取得します。
Postman で実験
準備は整いましたので、いざ Postman で検証。
1. まず Discovery からですが、これは認証不要ですので、以下の URL に GET を送信します。ドメインは自分のものに変更してください。
URL: https://lyncdiscover.<ドメイン名>.onmicrosoft.com/
もし結果に user が含まれず、 redirect が出た場合はそのアドレスでもう一度 GET すると user URL が取得できます。
2. 次に user に表示されているアドレスに GET を送信しますが、ここで認証が必要となります。Postman の Authorization タブで Auth 2.0 を選択します。
3. 「Get New Access Token」ボタンをクリックします。
4. Azure AD に登録したアプリケーションの情報とエンドポイント URL の情報を入力します。Token Name は任意で OK です。Auth URL には resource パラメーターとアクセスするアドレスの URL よりプロトコルとホスト名部分を付与してください。これ重要です。
変更前) https://login.microsoftonline.com/c65b4015-7448-4d6b-8608-243b02f0f3b4/oauth2/authorize
変更後) https://login.microsoftonline.com/c65b4015-7448-4d6b-8608-243b02f0f3b4/oauth2/authorize?resource=https://webdirjp1.online.lync.com
5. 「Request Token」ボタンをクリックするとサインイン画面が出るので、ユーザー名とパスワードを入力します。
6. 作成されたトークンを選択します、右の画面で Add token to より Header を選択し、「Use Token」をクリックします。
7. 「Send」をクリックしてリクエストを送信します。
次に application リンクに POST を送信しますが、ここでポイント。URL のホスト名が先ほど異なります。
8. アドレスに application のリンクを設定し、メソッドを POST に変更、Body を以下の様にします。フォーマットは JSON を選択してください。
9. 先ほどと同じように Authorization タブをクリックし、OAuth 2.0 を選択します。
10. 既に取得済のトークンが表示されますが、これは異なる URL に対して取得したものであるため使えません。「Get New Access Token」をクリックします。前回情報が既に埋め込まれていますが、 Auth URL を変更します。
変更前) https://login.microsoftonline.com/c65b4015-7448-4d6b-8608-243b02f0f3b4/oauth2/authorize?resource=https://webdirjp1.online.lync.com
変更後) https://login.microsoftonline.com/c65b4015-7448-4d6b-8608-243b02f0f3b4/oauth2/authorize?resource=https://webpoolos2jp107.infra.lync.com
11. 「Request Token」をクリックします。結果を前回同様、ヘッダーに追加して送信します。
あとは好きに遊びます。
まとめ
今回は Azure AD 連携したアプリケーションに対して Postman を使った OAuth 2.0 でのトークン取得を紹介しました。ポイントはアプリケーションの追加方法と Auth URL に resource を指定することでした。是非いろいろなアプリケーションでも試してください。
– 中村 憲一郎