Azure Integration サポート チームの長坂です。
Azure Logic Apps では多くのコネクタをサポートしており、様々な Azure サービスへの認証と接続を行うことが可能です。
ただし、Azure Logic Apps の標準の機能として提供されるコネクタを使えないサービスやユース―ケースにおいては、認証と接続をワークフローの中で明示的に行うほかない場合があります。
例えば、Azure Logic Apps Standard を使用して仮想ネットワーク統合の機能を有効化し、Logic Apps から他の Azure サービスへの接続をプライベートなネットワーク経路で行う、といったユースケースでコネクタがその状況に対応していないということが起こり得ます。
コネクタが使えない状況で特定のサービスに対して REST API の要求を行うときは、多くの場合代替手段として HTTP アクションを使用することが考えられます。
HTTP アクションの Authentication 機能でマネージド ID を選択することにより、Logic Apps の マネージド ID を使って取得したアクセストークンを RFC 6750 で定められた形式のヘッダーとして追加することが可能です。
RFC 6750 に沿って Authorization ヘッダーを Bearer token value
のような形式で定めている Azure サービスの REST API 要求であれば、HTTP アクションの機能でマネージド ID を選択することで有効なリクエスト形式の要求を送信することが可能です。
しかし、Azure サービスのデータプレーンへの要求では一部 Authorization ヘッダーが前述のものとは異なる形式となっている場合があり、そのようなサービスへの要求では HTTP アクションの Authentication 機能でマネージド ID を選択したとしても、Authorization ヘッダーの形式が合っていないために要求が失敗します。
こういった状況に遭遇した場合の対処としては、アクセストークンも HTTP アクションによって取得した上で、アクセストークンの値を要求先のサービスが定めるヘッダー形式に合うように加工して後続の HTTP アクションで REST API の要求を行うという手法が有効です。
以下、Azure Logic Apps Standard プランを使用する前提でこれを実現する方法についてご紹介いたします。
目次
- Logic Apps Standard (App Service) でマネージド ID の資格情報を使用してアクセストークンを取得する方法
- アクセストークンを要求するエンドポイントとヘッダー
- エンドポイントとヘッダーを取得する
- レスポンスの値をワークフローの動的コンテンツとして取り扱う
- HTTP アクションによるアクセストークンの要求
- まとめ
1. Logic Apps Standard (App Service) でマネージド ID の資格情報を使用してアクセストークンを取得する方法
Azure Logic Apps Standard (シングルテナント) は、ホスト環境を独自に指定する場合を除いて基本的には App Service プラン上で動作します。
App Service は環境変数として、ローカルのトークン要求エンドポイントを持っており、この URL に対して GET リクエストを送信することでアクセストークンを取得することができます。
トークン要求のリクエストについては以下を参照してください。
マネージド ID - Azure App Service | Microsoft Learn
Azure Logic Apps Standard は App Service プラン上で動作するため、この仕組みを利用してアクセストークを取得することが可能です。
2. アクセストークンを要求するエンドポイントとヘッダー
マネージド ID - Azure App Service | Microsoft Learn に記載の通り、以下の環境変数にそれぞれエンドポイント URL とヘッダーの値が設定されております。
IDENTITY_ENDPOINT
- ローカル トークン サービスに対する URL。IDENTITY_HEADER
- サーバー側のリクエスト フォージェリ (SSRF) 攻撃を回避するために使用するヘッダー。 値は、プラットフォームによってローテーションされます。
3. エンドポイントとヘッダーを取得する
環境変数の値を取得する方法は別の記事でご紹介しております。
一例として、Execute Powershell Code
アクションで環境変数を取得するコードを記載します。
1 | $envVariables = [PSCustomObject]@{ |
値はアクションの出力で JSON として返されます。
後述するParse JSON
アクションなどで、JSON に含まれる値を動的コンテンツとして扱えるようにすると、後続のアクションでの値の指定が便利になります。
4. レスポンスの値をワークフローの動的コンテンツとして取り扱う
Parse JSON
等のデータ操作向けのアクションを使用します。
使用例は以下のドキュメントをご参照ください。Parse JSON 以外にもデータ形式や特定のデータ型に適したアクションが提供されております。
例えば、3. エンドポイントとヘッダーを取得する の出力 JSON のスキーマが以下の通りであるため、これを Parse JSON の Schema とすれば、前のアクションから受け取った Schema に一致する出力の JSON の各値を動的コンテンツとして扱えるようになります。
1 | { |
5. HTTP アクションによるアクセストークンの要求
IDENTITY_ENDPOINT
の URL に対して、X-IDENTITY-HEADER
ヘッダーにIDENTITY_HEADER
の値を入れて GET リクエストを送信することで、レスポンスでアクセストークンを取得できます。
HTTP リクエストの送信には、HTTP アクションを使用します。
参考
例えば、HTTP アクションの設定でトークン要求エンドポイントやX-IDENTITY-HEADER
を以下のように入力すると、GET リクエストを送信します。
レスポンスは JSON のため、 4. レスポンスの値をワークフローの動的コンテンツとして取り扱う と同様の方法でアクセストークンの値も動的コンテンツとして扱えるようにすることで、後続のアクションでトークンを使用したリクエストを送信する HTTP アクションにおける値の指定が便利になります。
取得したアクセストークンを適宜加工することで、認可を伴う他のサービスへの要求において任意のヘッダー形式でリクエストを送信することができます。
6. まとめ
本記事では、Azure Logic Apps Standard のマネージド ID 資格情報で HTTP アクションにより明示的にアクセストークンの値を取得する方法をご紹介しました。
今回ご紹介した内容は Microsoft ID プラットフォームにおけるトークン (JWT) の仕組みを基礎としております。
承認サーバーである Microsoft Entra へアクセストークンを要求する仕組みについては以下の Microsoft ID プラットフォームの公開情報に記載されておりますので、ご参照いただくことでより理解が深まるかと存じます。
トークンと要求の概要 - Microsoft identity platform | Microsoft Learn
Logic Apps では様々なサービスとの接続用にコネクタが提供されているため、基本的にはコネクタで認証と接続が可能かを先に確認いただくことを推奨いたします。
Logic Apps で提供されているいずれのコネクタも要件やユースケースに合わず、独自のヘッダー形式でアクセストークンを指定して他のサービスに要求を送信する必要があるような場合に、今回ご紹介した方法が役に立つかと存じます。
皆様の開発のご参考になれば幸いです。
本記事の情報は、2025 年 6 月 2 日時点の内容となります。
※本情報の内容(添付文書、リンク先などを含む)は、作成日時点でのものであり、予告なく変更される場合があります。