認証セットアップ(プレビュー)

Note

セットアップ ガイドで次の認証設定を構成するには、全体管理者ロールが必要です。

認証で動作できるようにするには、次の 3 つのセットアップを実行する必要があります:

Fabric の認証で動作するようにするには、このガイドに従ってください。

Azure Storage サービスのプロビジョニング

このサンプルは、Lakehouseとの間でのデータの格納と読み取りを実証します。 これには、OBO フローで Azure Storage サービスのトークンを生成する必要があります。 トークンを生成するには、ユーザーが Azure Storage を使用してアプリに同意する必要があります。 同意するには、テナントで Azure Storage をプロビジョニングする必要があります。

テナントで Azure Storage がプロビジョニングされていることを確認するには:

  1. Azure portal にログインする

  2. Microsoft Entra ID > エンタープライズ アプリケーションに移動します。

  3. フィルターでは、アプリケーションの種類 = すべてのアプリケーションを選択します。 アプリケーション ID は e406a681-f3d4-42a8-90b6-c2b029497af1 で始まります

    Azure Storage プロビジョニングを示すスクリーンショット。

Azure Storage アプリケーションが既にプロビジョニングされている場合は、次の手順に進むことができます。 そうでない場合は、グローバル管理者がプロビジョニングする必要があります。

管理者として Windows PowerShell を開き、次のスクリプトを実行します。

Install-Module az  
Import-Module az  
Connect-AzureAD  
New-AzureADServicePrincipal -AppId e406a681-f3d4-42a8-90b6-c2b029497af1

Microsoft Entra ID でアプリケーションを手動で構成する

認証の設定作業を行うには、アプリを Microsoft Entra ID に登録する必要があります。 アプリケーションを登録していない場合は、このガイドに従って新しいアプリケーションを作成します。

  1. お使いのアプリに次の構成を適用します。

    • アプリをマルチテナント アプリにします。
    • 開発アプリケーションの場合、リダイレクト URI を SPA プラットフォームで http://localhost:60006/close として構成します。 この構成は、当社の同意サポートに必要です。 必要に応じて、他のリダイレクト URI を追加することができます。

    Note

    • リダイレクト URI は、ページに移動するときに単にページを閉じる URI である必要があります。 URI http://localhost:60006/close はフロントエンド サンプルで既に構成されており、Frontend/src/index.ts で変更できます (変更する場合は、アプリケーション用に構成されたものと一致していることを確認してください)。
    • [認証][管理] メニューからアプリを作成した後で、リダイレクト URI を構成できます。

    アプリケーションの登録 UI のスクリーンショット。

  2. お使いのアプリの アプリケーション ID URI を変更します。 これを行うには、[管理]>[API の公開] に移動し、お使いのアプリのアプリケーション ID URI を編集します。

    開発シナリオでは、アプリケーション ID URI は api://localdevinstance/<Workload publisher's tenant ID in lower case (the tenant ID of the user used in Fabric to run the sample)>/<Name of your workload> で始まる必要があり、末尾に / で始まる省略可能なサブパスを入れることができます (例を参照)。

    ここで:

    • ワークロード名は、マニフェストで指定されているとおりです。
    • ID URI はスラッシュで終わりません。
    • ID URI の末尾には、英語の小文字または大文字、数字、ダッシュを含む最大 36 文字の文字列で構成される省略可能なサブパスを指定できます。

    ヒント

    テナント ID の検索に関するヘルプについては、「Microsoft Entra テナント ID を検索する方法」を参照してください。

    たとえば、発行元のテナント ID が 853d9f4f-c71b-4420-b6ec-60e503458946 で、ワークロードの名前が Fabric.WorkloadSample の場合は、次のようになります。

    • 次の URI が有効です

      • api://localdevinstance/853d9f4f-c71b-4420-b6ec-60e503458946/Fabric.WorkloadSample
      • api://localdevinstance/853d9f4f-c71b-4420-b6ec-60e503458946/Fabric.WorkloadSample/abc
    • 次の URI は有効ではありません

      • api://localdevinstance/853d9f4f-c71b-4420-b6ec-60e503458946/Fabric.WorkloadSample/af/
      • api://localdevinstance/853d9f4f-c71b-4420-b6ec-60e503458946/Fabric.WorkloadSample/af/a
      • api://localdevinstance/853d9f4f-c71b-4420-b6ec-60e503458946/Fabric.WorkloadSample で始まらない ID URI

CRUD/ジョブのスコープを追加します

ワークロード項目の API の作成、読み取り、更新、削除などの操作をジョブで動作させるには、スコープを追加し、そのスコープの事前認証されたアプリケーションに Fabric サービス アプリケーションを追加して、API (作成したスコープ) が Fabric を信頼していることを示す必要があります:

  • [API の公開] で、[スコープの追加] を選択します。 スコープに FabricWorkloadControl という名前を付け、それに必要な詳細を指定します。

  • [認可済みのクライアント アプリケーション] で、[クライアント アプリケーションの追加] を選択します。 00000009-0000-0000-c000-000000000000 (Fabric サービス アプリケーション) を追加し、スコープを選択します。

データ プレーン API のスコープを追加する

データ プレーン API によって公開される操作のグループを表すために、その他のスコープを登録する必要があります。 バックエンド サンプルでは、4 つの例を示します。 Backend/src/Constants/scopes.cs で確認できます。 スコープは次のとおりです。

  • Item1.Read.All: ワークロード項目の読み取りに使用されます
  • Item1.ReadWrite.All: ワークロード項目の読み取り/書き込みに使用されます
  • FabricLakehouse.Read.All: Lakehouseファイルの読み取りに使用されます
  • FabricLakehouse.ReadWrite.All: 読み取り/書き込みのLakehouse ファイルに使用されます。

これらのスコープには、871c010f-5e61-4fb1-83ac-98610a7e9110 (Fabric クライアント アプリケーション) の事前認証を行います。

これらのアプリのアプリケーション ID は、Microsoft Power BI および Power BI サービス の下にあります。

アプリケーションで [API の公開] セクションの外観を次に示します。 この例では、ID URI は api://localdevinstance/853d9f4f-c71b-4420-b6ec-60e503458946/Fabric.WorkloadSample です:

お使いのアプリのシークレットを生成します。

[証明書およびシークレット] で、[シークレット] タブを選択し、シークレットを追加します。 任意の名前を付けて保存します。 バックエンド サンプル を構成するときは、このシークレットを使用します。

[シークレットの生成] ダイアログのスクリーンショット。

オプションの idtyp 要求の追加

[トークン構成] で、[オプションの要求の追加] を選択します。 [アクセス トークン] を選択し、idtyp を追加します。

idtyp 要求の追加を示すスクリーンショット。

API アクセス許可を追加する

[*API のアクセス許可] で、アプリケーションに必要なアクセス許可を追加します。 バックエンド サンプルでは、Storage user_impersonation (OneLake API の場合) と Power BI Workspace.Read.all (ワークロード制御 API の場合) を追加します。

API アクセス許可の追加を示すスクリーンショット。

アプリケーションが認証トークン v1 で動作するように設定されていることを確認する

[マニフェスト] で、accessTokenAcceptedVersion が null または "1" に設定されていることを確認します。

スクリプトを使用して Microsoft Entra Identity でアプリケーションを自動的に構成する

Microsoft Entra Identity でアプリケーションを効率的にセットアップするには、自動化された PowerShell スクリプトを使用できます。 次の手順に従ってアプリケーションを構成します。

  1. Azure CLI のインストール: Azure コマンド ライン インターフェイス (CLI) のインストールから始める Windows 用 Azure CLI のインストール | Microsoft Learn2
  2. CreateDevAADApp.ps1 スクリプトを実行する: CreateDevAADApp スクリプトを実行します。 アプリケーションを作成するユーザー アカウントの資格情報を使用してサインインするように求められます。
  3. 必要な情報の入力: サインインを求められたら、アプリケーションの目的の名前、ワークロード名 (プレフィックスとして "Org")、テナント ID を入力します。

スクリプトが正常に実行されると、ワークロードを構成するために必要なすべての詳細が出力されます。 さらに、アプリケーションへの直接 URL と、テナント全体のアプリケーション認可のための管理者の同意 URL が提供されます。

使用例

指定したテナントのワークロード名 "Org.Myworkload" を持つ "myWorkloadApp" という名前のアプリケーションを作成するには、PowerShell で次のコマンドを実行します。

powershell .\CreateDevAADApp.ps1 -applicationName "myWorkloadApp" -workloadName "Org.Myworkload" -tenantId "cb1f79ad-7930-43c0-8d84-c1bf8d15c8c7"

この例では、コマンド ライン引数を指定した CreateDevAADApp.ps1 スクリプトを使用して、アプリケーションのセットアップ プロセスを自動化する方法を示します。 指定されたテナント ID は一例であり、実際のテナント ID に置き換える必要があります。

ワークロードの構成 (バックエンド)

  1. バックエンド サンプルで、リポジトリ内の src/appsettings.json ファイルに移動し、設定を構成します。

    • PublisherTenantId: 発行元のテナント ID。
    • ClientId: ご自分のアプリケーション ID ([概要] の [Microsoft Entra ID] で確認できます)。
    • ClientSecret: Entra アプリを構成するときに 作成したシークレット
    • Audience: Entra アプリで 当社が構成した ID URI
  2. workloadManifest.xml を構成します。 リポジトリ内の src/Packages/manifest/files/WorkloadManifest.xml ファイルに移動し、AADAppsAppIdredirectUriResourceId (ID URI) を構成します。

<AADApp>
    <AppId>YourApplicationId</AppId>
    <RedirectUri>YourRedirectUri</RedirectUri>
    <ResourceId>YourResourceId</ResourceId>
</AADApp>

ワークロード ローカル マニフェストを構成し、アプリのトークンを取得します (フロントエンド)

Note

この手順は、devmode シナリオにのみ適用されます。

アプリケーションを構成した後、リポジトリにある Frontend/.env.dev 構成ファイルの devAADAppConfig セクションに次の構成を追加します。

"devAADAppConfig": {  
    "DEV_AAD_CONFIG_AUDIENCE": "", // The ID URI configured in your application for developer scenario
    "DEV_AAD_CONFIG_REDIRECT_URI": "http://localhost:60006/close", // or the path you configured in index.ts
    "DEV_AAD_CONFIG_APPID": "" // your app Id
}

.env.dev ファイルの構成を示すスクリーンショット。

Note

この手順は、CRUD/ジョブを機能させるために必要です。

  1. フロントエンド サンプルを実行し、サンプル項目を作成します。

  2. 下にスクロールし、[認証ページに移動] を選択します。

    設定された

  3. [最初の同意を要求する] をチェックし、[アクセス トークンの取得] を選択します。 これにより、アプリケーションの同意がトリガーされます。

    最初の同意のアクセス許可要求ダイアログを示すスクリーンショット。

この同意には、[API アクセス許可の追加] で先ほど追加した依存関係が含まれます。

次のタスクを実行できるようになりました:

  • CRUD/ジョブ操作を動作させます。
  • また、クライアント側でアプリのアクセス トークンを取得します。
  • フロントエンド サンプルの認証ページをプレイグラウンドとして使用して、ワークロード API を呼び出します。
  • Backend/src/controllers でバックエンド サンプルが提供する API を確認します。