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

★★★ イベント情報 ★★★
◇【参加登録受付中】Kong Summit, Japan 2022◇
今年は12月15日に開催決定!最新情報とデモとともにKongと事例/ユースケースのご紹介などAPIエコノミーやマイクロサービスに関心のある開発者の方にとっては必見です。ぜひお申し込みください!イベントの詳細・お申込はこちら

★★★ Live配信告知 ★★★
◇11月29日開催 19:00~ 世界一わかりみの深いクラウドネイティブon Azure◇
テーマは「Web App for ContainersとKeycloakで最速OpenID Connect」です!

◇11月30日開催 17:00〜 知ってると ちょっと便利なコマンド集◇
知っていると少し効率の上がるようなコマンドをいくつかご紹介します!
こんにちは、サイオステクノロジーの佐藤 陽です。
今回は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にアクセスしました。

安全かつ便利な認証方法だと思うので、是非試してみてください。




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



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


ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

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

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

Be the first to comment

Leave a Reply

Your email address will not be published.


*


質問はこちら 閉じる