認証 (プレビュー)

この記事では、Power Platform API を呼び出すための Microsoft Entra のセットアップの概要について説明します (プレビュー)。 Power Platform API を経由して利用可能なリソースにアクセスするには、ベアラー トークンを Microsoft Entra から取得して、各要求と一緒にヘッダーとして送信します。 この記事で説明されているように、サポートしている ID タイプ (ユーザーとサービスプリンシパル) に応じて、このベアラー トークンを取得するフローは異なります。

正しいアクセス許可を持つベアラー トークンを取得するには、次の手順が必要です。

  1. Microsoft Entra テナントでアプリケーションの登録を作成する
  2. API アクセス許可の構成
  3. パブリック クライアントの構成 (オプション)
  4. 証明書とシークレットの構成 (オプション)
  5. アクセス トークンの要求

ステップ 1. アプリケーションの登録の作成

Microsoft Entra アプリの登録ページに移動して、新しい登録を作成します。 アプリケーションに名前を付け、シングル テナント オプションを選択します。 リダイレクト URI の設定はスキップできます。

ステップ 2. API アクセス許可の構成

新しいアプリの登録内で、管理 - API アクセス許可 タブに移動します。アクセス許可の構成 セクションで アクセス許可の追加 を選択します。 開いたダイアログ ウィンドウで、自分の組織が使用する API タブを選択し、Power Platform API を検索します。 これに似た名前のエントリがいくつか表示される場合があるため、GUID 8578e004-a5c6-46e7-913e-12f58912df43 を含むエントリを使用してください。

GUID で検索してもリストに Power Platform API が表示されない場合は、引き続きアクセスできる可能性はありますが、表示は更新されません。 PowerShell スクリプトで強制的に更新実行するには:

#Install the Microsoft Entra the module
Install-Module AzureAD

Connect-AzureAD
New-AzureADServicePrincipal -AppId 8578e004-a5c6-46e7-913e-12f58912df43 -DisplayName "Power Platform API"

ここから、必要なアクセス許可を選択する必要があります。 これらは 名前空間 ごとにグループ化されます。 名前空間で、AppManagement.ApplicationPackages.Read のようにリソース タイプとアクションが分かります。これにより、アプリケーション パッケージの読み取りアクセス許可が付与されます。 詳細については、アクセス許可の参照 記事を参照してください。

注意

Power Platform API は、現時点でのみ委任されたアクセス許可を使用します。 ユーザー コンテキストで実行されるアプリケーションの場合、範囲 パラメータを使用して委任されたアクセス許可を要求します。 これらのアクセス許可は、サインインしたユーザーのアクセス許可をアプリケーションに委任し、Power Platform API エンドポイントの呼び出し時にユーザーとして機能できるようにします。

サービス プリンシパル ID の場合、アプリケーションのアクセス許可は使用されません。 代わりに、サービス プリンシパルは現在 Power Platform 管理者として扱われるため、PowerShell - サービス プリンシパルの作成に従って登録する必要があります。

必要なアクセス許可がアプリケーションに追加されたら、管理者の承認を付与 を選択してセットアップを完了します。 これは、インタラクティブな同意エクスペリエンスを必要とせずに、ユーザーがアプリにすぐにアクセスできるようにする場合に必要です。 インタラクティブな同意に対応できる場合は、Microsoft ID プラットフォームと OAuth 2.0 認証コード フローに従うことをお勧めします。

ステップ 3. パブリック クライアントの構成 (オプション)

アプリでユーザーの代わりにリソースの読み取りと書き込みを行う必要がある場合は、パブリック クライアント設定を有効にする必要があります。 これが、Microsoft Entra ID がトークンの要求の本文でユーザー名とパスワードのプロパティを受け入れる唯一の方法です。 また、この機能を使用する場合は、多要素認証が有効になっているアカウントでは機能しないことに注意してください。

有効にするには、管理 - 認証 タブに移動します。詳細設定 セクションで パブリッククライアントはい に切り替えます。

ステップ 4. 証明書とシークレットの構成 (オプション)

アプリ自体がリソースの読み取りと書き込みを必要とする場合 (サービス プリンシパルとも呼ばれます)、認証には 2 つの方法があります。 証明書を使用するには、管理 - 証明書とシークレット タブに移動します。証明書 セクションで、認証に使用できる x509 証明書をアップロードします。 もう 1 つの方法では、シークレット セクションを使用してクライアント シークレットを生成します。 自動化が必要になった場合に使用できるように、シークレットを安全な場所に保存してください。 証明書またはシークレット オプションを使用すると、Microsoft Entra で認証し、このクライアントのトークンを受け取ることができます。トークンは、REST API または PowerShell コマンドレットのいずれかに渡されます。

ステップ 5 アクセス トークンの要求

アクセス ベアラー トークンを取得する方法は 2 つあります。 1 つはユーザー名とパスワードを使用する方法で、もう 1 つはサービス プリンシパルを使用する方法です。

ユーザー名とパスワード フロー

上記のパブリック クライアントのセクションを必ずお読みください。 次に、HTTP 経由で、ユーザー名とパスワードのペイロードを使用して Microsoft Entra ID に POST 要求を送信します。

Content-Type: application/x-www-form-urlencoded
Host: login.microsoftonline.com
Accept: application/json
POST https://login.microsoftonline.com/YOUR_TENANT.COM/oauth2/v2.0/token
BODY:
client_id={CLIENT_ID_FROM_AZURE_CLIENT_APP}&scope=https://api.powerplatform.com/.default&username={USER_EMAIL_ADDRESS}&password={PASSWORD}&grant_type=password

上記の例には、Microsoft Entra ID のクライアント アプリケーションから取得できるプレースホルダーが含まれています。 Power Platform API への後続の呼び出しに使用できる応答を受信します。

{
  "token_type": "Bearer",
  "scope": "https://api.powerplatform.com/AppManagement.ApplicationPackages.Install https://api.powerplatform.com/AppManagement.ApplicationPackages.Read https://api.powerplatform.com/.default",
  "expires_in": 4747,
  "ext_expires_in": 4747,
  "access_token": "eyJ0eXAiOiJKV1QiLCJu..."
}

認証 HTTP ヘッダーを使用して、Power Platform API への後続の呼び出しで access_token 値 を使用します。

サービス プリンシパル フロー

上記の証明書とシークレットのセクションを必ずお読みください。 次に、クライアント シークレット ペイロードを使用して、HTTP 経由で Microsoft Entra ID に POST 要求を送信します。 これは、多くの場合サービス プリンシパル認証と呼ばれます。

重要

これは、関連する PowerShell または REST のいずれかのドキュメントに従って、このクライアント アプリケーション ID を Microsoft Power Platform に登録した後でのみ使用できます。

Content-Type: application/x-www-form-urlencoded
Host: login.microsoftonline.com
Accept: application/json
POST https://login.microsoftonline.com/YOUR_TENANT.COM/oauth2/v2.0/token
BODY:
client_id={CLIENT_ID_FROM_AZURE_CLIENT_APP}&scope=https://api.powerplatform.com/.default&client_secret={SECRET_FROM_AZURE_CLIENT_APP}&grant_type=client_credentials

上記の例には、Microsoft Entra ID のクライアント アプリケーションから取得できるプレースホルダーが含まれています。 Power Platform API への後続の呼び出しに使用できる応答を受信します。

{
  "token_type": "Bearer",
  "expires_in": 3599,
  "ext_expires_in": 3599,
  "access_token": "eyJ0eXAiOiJKV1..."
}

認証 HTTP ヘッダーを使用して、Power Platform API への後続の呼び出しで access_token 値 を使用します。 上記のように、サービス プリンシパル フローはアプリケーションのアクセス許可を使用せず、代わりに、現時点では、実行するすべての呼び出しに対する Power Platform 管理者として扱われます。

参照

PI を使用したサービス プリンシパル アプリケーションの作成 (プレビュー)
PowerShell - サービス プリンシパルの作成