Azure AD認証を使ってAzure REST APIへアクセスする ~Service Bus編~

◆ Live配信スケジュール ◆
サイオステクノロジーでは、Microsoft MVPの武井による「わかりみの深いシリーズ」など、定期的なLive配信を行っています。
⇒ 詳細スケジュールはこちらから
⇒ 見逃してしまった方はYoutubeチャンネルをご覧ください
【4/18開催】VSCode Dev Containersで楽々開発環境構築祭り〜Python/Reactなどなど〜
Visual Studio Codeの拡張機能であるDev Containersを使ってReactとかPythonとかSpring Bootとかの開発環境をラクチンで構築する方法を紹介するイベントです。
https://tech-lab.connpass.com/event/311864/
こんにちは、サイオステクノロジーの佐藤 陽です。
今回はAzureリソースにREST APIでアクセスする方法について紹介します。

なお、APIは保護されており、アクセストークンを用いてアクセスする必要があります。
そのためAzure AD認証を使ったアクセストークンの取得方法に関しても併せてご紹介します。

Azure Survice Busを題材として紹介していきますが、他のリソースでも同じようにアクセス可能です!

リソースの作成

AzurePortalからService BusおよびQueueを作成します。

まず初めにService Busのリソースを作成しましょう。
料金プランはBasicで問題ないです。
リソースのデプロイが完了したら、Queuesのブレードを選択し、新規にQueueを作成します。

 

これでリソースの作成は完了です。

Azure AD認証

次にAzure AD認証を通してアクセストークンを取得します。

Applicationの作成

Azure ADに新規にアプリケーションを作成し、併せてシークレットを作成します。
シークレットの値は後ほど使うのでメモしておきましょう!

次に、このAADアプリに対してServiceBusのQueueへのアクセス権限を与えるため、アプリに対して適切なRoleを割り当てます。
今回の例であれば、Azure Service Bus Data ReceiverAzure Service Bus Data SenderのRoleが必要になります。

アクセストークンの取得

今回はクライアントとしてPostmanを利用します。
本記事にてHeaderの内容を記載していますが、Postmanで標準で与えられているHeaderの内容はそのままにし、それらに追加する形で利用してください。

Postmanを起動し、
HTTPメソッドGET
URIhttps://login.microsoftonline.com/<TENANTID>/oauth2/token
HeaderContent-Type:application/x-www-form-urlencoded
Body
grant_type:client_credentials
client_id:{Application Id(Client Id)}
client_secret:{Client Secret}
resource:https://servicebus.azure.net
の内容で実行します。

※今回は素のシークレットの値を利用しますが、実装時にはAzure Key Vaultに保管するなどしてくださいね
すると、レスポンスのbodyからaccess_tokenを取得することができます。

REST APIの実行

アクセストークンが取得できたので実際にREST APIを実行してみましょう。
まず始めにQueueに対してメッセージを追加したいと思います。
取得したアクセストークンはHeaderのAuthorizationのパラメータとして扱います。

“Bearer “という文字列に続いて、アクセストークンの値を追記しましょう。
ex. Bearer eyJ0eXAiOiaASFfdDKV1QiLCJsfsdgOiJSUzI1NiIsIng1.....

Postmanを起動し、

HTTPメソッドPOST
URIhttps://sb-restapi-testing.servicebus.windows.net/queue-restapi-testing/messages
Header
Content-Type:application/json;type=entry;charset=utf-8
Authorization:Bearer <AccessToken>
Body
{
    “message”:”This is a message”
}
の内容で実行します。
201番のレスポンスが返ってきたらOKです。

AzurePortalのService Bus Explorerから確認してみましょう。
正しくメッセージが追加されていることがわかります。

また、せっかくなのでREST APIでもメッセージを取得してみたいと思います。

Postmanを起動し、
HTTPメソッドPOST
URIhttps://sb-restapi-testing.servicebus.windows.net/queue-restapi-testing/messages/head
HeaderAuthorization:Bearer <AccessToken>
の内容で実行すると、先ほど送ったQueueの先頭にあるメッセージが取得できていることがわかります。

まとめ

Azure AD認証を用いてアクセストークンを取得し、REST APIを利用してService Busにアクセスしました。

安全かつ便利な認証方法だと思うので、是非試してみてください。
アバター画像
About 佐藤 陽 47 Articles
ロードバイクやトレランなど、走ることが好きなサーバーサイドエンジニア。組み込み系からWeb系へとジョブチェンジし、現在はAzureを使ったWebアプリの開発や、DevOpsの構築を行っています。
ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

1人がこの投稿は役に立ったと言っています。


ご覧いただきありがとうございます。
ブログの最新情報はSNSでも発信しております。
ぜひTwitterのフォロー&Facebookページにいいねをお願い致します!



>> 雑誌等の執筆依頼を受付しております。
   ご希望の方はお気軽にお問い合わせください!

Be the first to comment

Leave a Reply

Your email address will not be published.


*


質問はこちら 閉じる