1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Power Automate/Power Apps】カスタムコネクタでAzure API Managementに認証付きで要求する

Last updated at Posted at 2025-07-03

やりたいこと

Power AutomateとPower Appsで利用できるカスタムコネクタを使ってAzure API Management(APIM)のAPIを呼び出したい。
APIM呼び出しにはAzureサービスプリンシパルを使ったOAuth2.0認証トークンで認証を通したい。(APIMのサブスクリプションキーは使わない)

動作確認できたところまでの備忘録を残しているので、一部不要な設定があるかもしれないことに注意してください。

事前知識

2025年7月時点でカスタムコネクタのOAuth2.0ではMicrosoft v1.0エンドポイントが使われています。
この投稿でやりたいことと 似た記事 があったので、こちらも参考になると思います。
Power Automateの場合はカスタムコネクタを作成せずとも、Logic Apps内でトークン取得して、APIMにアクセスすることができます。この記事 が参考になります。

Azureアプリ登録

Azureポータルで認証・認可に使用するアプリを用意します。クライアントシークレットを発行して値をメモしておきます。

image.png

APIのアクセス許可で Azure API Management Data plane を追加し、管理者の同意を与えます。

image.png

認証ページで Web のリダイレクトURIをあとのステップで追加します。

image.png

APIの公開ページでアプリケーションID URI( api://クライアントID の形式)を設定します。スコープは今回は追加せずに進めました。

image.png

マニフェストページを開き、 api.requestedAccessTokenVersion2 に変更して保存します。

image.png

APIMでAPIを登録する

APIM経由で呼び出したいAPIを登録します。
次にAPIのポリシーでInboundブロックを下記のように指定します。

    <inbound>
        <base />
        <validate-jwt header-name="Authorization" failed-validation-httpcode="401" failed-validation-error-message="Unauthorized">
            <openid-config url="https://sts.windows.net/{テナントID}/.well-known/openid-configuration" />
            <audiences>
                <audience>作成したAzureアプリのクライアントID</audience>
                <audience>https://apihub.azure.com</audience>
            </audiences>
            <issuers>
                <issuer>https://sts.windows.net/{テナントID}/</issuer>
            </issuers>
        </validate-jwt>
    </inbound>

Azureアプリを使ってJWTトークンを生成し、それをOAuth認証する流れですが、 validate-jwt ブロックと audiencesissuers は最低限必要だそうです。 validate-jwt のドキュメンテーションは こちら

また、APIの設定で Subscription required にチェックがついていることも確認してください。
私が動作確認したときは、カスタムコネクタ作成後のテストでサブスクリプションキーが間違っているエラーが何度も出てきましたが、 Subscription required のチェックをつけ外したり、 製品 ページの設定で サブスクリプションを要求する をつけ外したりしていると、該当エラーは発生しなくなりました。(最終的には両方とのサブスクリプションキー必須にすること)
サブスクリプションキーとOAuthを組みわせるとサブスクリプションキーのほうでUnauthorizedエラーになってしまったため、サブスクリプションのチェックは外して動作確認してください。いろいろ設定を試しましたがどうしてもサブスクリプションキーの併用はうまくいきませんでした。

Power Automateでカスタムコネクタを作成する

Power Automateのカスタムコネクタページを開き新規作成します。(見つからない場合は https://make.powerautomate.com/environments/Default-XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/connections/custom を開く)
コネクタ作成は 全般 セキュリティ 定義 AIプラグイン コード テスト のタブがあるので、それぞれ入力していきます。
Azureサービスから作成する を使えば、APIMからAPIを取り込めます。

全般

ホストはAPIMのURLを、ベースURLは /{API名} にします。

セキュリティ

認証タイプは OAuth 2.0 に変更して、下記の通り入力します。
Client IDResource URL はそれぞれAzureアプリのクライアントIDを指定します。
リダイレクトURL の値はAzureアプリの Web リダイレクトURI に追加しておきます。 https://authorization-manager.consent.azure-apim.net/redirect/apim/{APIM名} も念のため追加はしていました。

image.png

定義

APIMから取り込んでいたら、 アクション がエンドポイントの数だけ定義済になっています。Swagger(OpenAPI)エディタでAPIの定義を調整します。

APIM要求にはサブスクリプションキーをヘッダーに含める必要がありますが、それを ポリシー で下記の通り設定します。 Operations は全エンドポイントを選択し、 Header value はAPIMのサブスクリプションキーを指定します。
この設定をすることで、このカスタムコネクタからのリクエストでは常にヘッダーに ocp-apim-subscription-key が付与されます。
サブスクリプションキーの設定は正しく設定しても、401 Access Deniedになってしまったため、使わないことにしたので、設定不要です

image.png

AIプラグインとコード

デフォルトのままでOK

テスト

ここでAPIの呼び出しテストを行います。新しい接続を作成し(ユーザー認証のポップアップが出てきます)、テスト操作を行います。
ユーザー認証の部分でエラーになることが多かったので、もしエラーになった場合は修正が必要になると思います。
ユーザー認証はできたけど、テスト操作でエラーになる場合は、同じトークンとサブスクリプションキーを使って別のAPIテストツールで直接APIMにリクエストが通るか確認したりしてみてください。

image.png

Power Automate/Power Appsでカスタムコネクタを使用する

Power Automate/Power Appsでコネクタを使って動作できるか確認して、正常に動作すれば作業完了です。

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?