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

こんにちは、サイオステクノロジーの佐藤 陽です。
今回は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
URI https://login.microsoftonline.com/<TENANTID>/oauth2/token
Header Content-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
URI https://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
URI https://sb-restapi-testing.servicebus.windows.net/queue-restapi-testing/messages/head
Header Authorization:Bearer <AccessToken>
の内容で実行すると、先ほど送ったQueueの先頭にあるメッセージが取得できていることがわかります。

まとめ

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

安全かつ便利な認証方法だと思うので、是非試してみてください。
ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

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

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

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です