(仮) ブログ

主にWeb Apps や、Azure PaaS サービス を使う際に役立ちそうなことを書こうと思っています。

curl で AD の認証がかかった Web Apps にアクセスする

目次

Azure Web Apps では、アプリケーションのプログラムを全く変更せずに認証機能を有効化することができます。 これを使うことで、Web Apps や、API Apps を Azure AD で保護することができるので、セキュリティを向上させることができます。

docs.microsoft.com

非常に便利な機能なんですが、検証環境で有効化した際に動くかテストする時は結構めんどくさいです。 C# の場合は、すでにこちらに Blog があるのですが、言語に合わせてプログラムを作るのは案外骨が折れます。

Accessing Azure App Services using Azure AD Bearer token – Http Client Protocol Issues (and other fun stuff I support)

今日は AD 認証が有効化された Web Apps に curl コマンドで簡単にアクセスしてみようと思います。

この後の手順では下記ドキュメントの内容を、実際に試しています。

docs.microsoft.com

前準備

プログラムやコマンドからアクセスする場合は、AD アプリケーションとしてそれぞれ設定する必要があります。 Web Apps 側だけでもいいとは思いますが、Web Apps 側、クライアント側それぞれ設定しましょう。

Azure Web Apps の場合はこちら。Application ID を保存しておいてください。

docs.microsoft.com

docs.microsoft.com

クライアント側はこっちで設定しましょう。AD アプリケーションをセットアップして、Application ID とシークレットを保存してください。

docs.microsoft.com

この後、これらの情報を使って curl コマンドを実行します。

  • Web Apps 側の Application ID
  • クライアント側の Application ID
  • クライアント側の Secret
  • Tenant ID

準備ができたらコマンドを実行していきます。

アクセスの流れ

  • Web Apps へアクセスするための Bearer トークンを取得する
  • Bearer トークンを Authorization ヘッダーに入れてアクセスする

Web Apps へアクセスするための Bearer トークンを取得する

Bearer トークンを取得するために POST 要求を投げます。

curl -X POST https://login.microsoftonline.com/<TENANT ID>/oauth2/token  \
  -F grant_type=client_credentials \
  -F resource=<Web App CLIENT ID> \
  -F client_id=<Client Application ID> \
  -F client_secret=<SECRET>

実行すると、トークンが返ってくるのでコピーしておきましょう。

取得したトークンとともに Web Apps へアクセスする

取得した Bearer トークンとともに Web Apps へアクセスしてください。

curl  https://<Your Web App>.azurewebsites.net  \
  -H "Authorization:Bearer <Bearer Token>"

Bearer とトークンの間は半角スペースを開けましょう。

curl コマンドでテストできると、コードを書かずに、 認証の動作を簡単に確認できて便利ですね。