次の方法で共有


テンプレート アプリのインストールの自動構成

テンプレート アプリは、顧客がデータから分析情報を取得するための優れた方法です。 テンプレート アプリは、データに接続することで、それらを迅速に起動して実行します。 テンプレート アプリには、必要に応じてカスタマイズできる事前構築済みのレポートが用意されています。

お客様は、データに接続する方法の詳細を常に理解しているとは限りません。 テンプレート アプリをインストールするときにこれらの詳細を指定する必要があることは、ユーザーにとって問題になる可能性があります。

データ サービス プロバイダーであり、顧客がサービスでデータを使い始めるのに役立つテンプレート アプリを作成している場合は、テンプレート アプリを簡単にインストールできます。 テンプレート アプリのパラメーターの構成を自動化できます。 顧客がポータルにサインインすると、準備した特別なリンクが選択されます。 このリンク:

  • 必要な情報を収集する自動化を起動します。
  • テンプレート アプリのパラメーターを事前構成します。
  • アプリをインストールできる Power BI アカウントに顧客をリダイレクトします。

必要なのは、インストールを選択してデータソースに対して認証するだけで、準備完了です。

カスタマー エクスペリエンスを次に示します。

ISV ポータル、構成手順、Power BI リダイレクト プロセスを示す自動化されたテンプレート アプリのインストール フローのスクリーンショット。

この記事では、テンプレート アプリのインストールの構成を自動化するために必要な基本的なフロー、前提条件、主要な手順、および API について説明します。 詳細を確認して開始する場合は、Azure 関数を使用して準備した簡単なサンプル アプリケーションを使用して、テンプレート アプリのインストールの構成を自動化する チュートリアル に進むことができます。

自動化された構成の基本的なフロー

テンプレート アプリのインストールの構成を自動化するための基本的なフローは、次のようになります。

  1. ユーザーは ISV のポータルにサインインし、指定されたリンクを選択します。 このアクションにより、自動化されたフローが開始されます。 ISV のポータルは、この段階でユーザー固有の構成を準備します。
  2. ISV は、ISV テナントに登録されている サービス プリンシパル (アプリ専用トークン) に基づいてアプリ専用トークンを取得します。
  3. Power BI REST API を使用して、ISV はインストール チケットを作成します。このチケットには、ISV によって準備されたユーザー固有のパラメーター構成が含まれます。
  4. ISV は、インストール チケットを含む POST リダイレクト 方法を使用して、ユーザーを Power BI にリダイレクトします。
  5. ユーザーは、インストール チケットを使用して Power BI アカウントにリダイレクトされ、テンプレート アプリをインストールするように求められます。 ユーザーが [インストール] を選択すると、テンプレート アプリがインストールされます。

パラメーター値はインストール チケットの作成プロセスで ISV によって構成されますが、データ ソース関連の資格情報は、インストールの最終段階でユーザーによってのみ提供されます。 この配置により、サード パーティに公開されるのを防ぎ、ユーザーとテンプレート アプリのデータ ソース間の安全な接続が確保されます。

[前提条件]

テンプレート アプリの事前構成済みインストール エクスペリエンスを提供するには、次の前提条件が必要です。

  • Power BI Pro ライセンス。 Power BI Pro にサインアップしていない場合は、開始する前に 無料試用版にサインアップ してください。

  • あなた自身の Microsoft Entra テナント設定。 セットアップ方法については、「 Microsoft Entra テナントを作成する」を参照してください。

  • 前テナントに登録済みのサービス プリンシパル (アプリ専用トークン)。 詳細については、「 サービス プリンシパルとアプリケーション シークレットを使用して Power BI コンテンツを埋め込む」を参照してください。 アプリケーションを サーバー側の Web アプリケーション アプリとして登録してください。 サーバー側 Web アプリケーションを登録して、アプリケーション シークレットを作成します。 このプロセスから、後の手順のために アプリケーション ID (ClientID) と アプリケーション シークレット (ClientSecret) を保存する必要があります。

  • インストールの準備ができている パラメーター化されたテンプレート アプリ 。 テンプレート アプリは、アプリケーションを Microsoft Entra ID に登録するのと同じテナントに作成する必要があります。 詳細については、「 テンプレート アプリのヒント 」または 「Power BI でテンプレート アプリを作成する」を参照してください。 テンプレート アプリから、次の手順に関する次の情報をメモする必要があります。

    • アプリの作成時にテンプレート アプリのプロパティを定義するプロセスの最後にインストール URL に表示されるアプリ ID、パッケージ キー所有者 ID。 テンプレート アプリの [リリース管理] ウィンドウで [リンクの取得] を選択して、同じリンクを取得することもできます。
    • テンプレート アプリのセマンティック モデルで定義されているパラメーター名。 パラメーター名は大文字と小文字を区別する文字列であり、テンプレート アプリのプロパティを定義するとき、または Power BI のセマンティック モデル設定から[パラメーター設定]タブから取得することもできます。
  • 自動化のワークフローをテストできるようにするには、サービス プリンシパルを管理者としてテンプレート アプリ ワークスペースに追加します。

    テンプレート アプリがまだ AppSource で一般公開されていない場合でも、テンプレート アプリで事前構成済みのインストール アプリケーションをテストできます。 テナント外のユーザーが自動インストール アプリケーションを使用してテンプレート アプリをインストールできるようにするには、テンプレート アプリを AppSource で一般公開する必要があります。 作成している自動インストール アプリケーションを使用してテンプレート アプリを配布する前に、必ず パートナー センターに発行してください。

主な手順と API

テンプレート アプリのインストールと必要な API の構成を自動化するための主な手順については、次のセクションで説明します。 ほとんどの手順は Power BI REST API で行われますが、ここで説明するコード例は .NET SDK を使用して行われます。

手順 1: Power BI クライアント オブジェクトを作成する

Power BI REST API を使用するには、Microsoft Entra ID からサービス プリンシパルアクセス トークンを取得する必要があります。 Power BI REST API を呼び出す前に、Power BI アプリケーションの Microsoft Entra アクセス トークンを取得する必要があります。 アクセス トークンを使用して Power BI クライアントを作成するには、Power BI クライアント オブジェクトを作成する必要があります。これにより、Power BI REST API を操作できます。 Power BI クライアント オブジェクトを作成する場合は、 AccessTokenMicrosoft.Rest.TokenCredentials オブジェクトでラップします。

using Microsoft.IdentityModel.Clients.ActiveDirectory;
using Microsoft.Rest;
using Microsoft.PowerBI.Api.V2;

var tokenCredentials = new TokenCredentials(authenticationResult.AccessToken, "Bearer");

// Create a Power BI client object. It's used to call Power BI APIs.
using (var client = new PowerBIClient(new Uri(ApiUrl), tokenCredentials))
{
    // Your code goes here.
}

手順 2: インストール チケットを作成する

インストール チケットを作成します。これは、ユーザーを Power BI にリダイレクトするときに使用されます。 この操作に使用される API は CreateInstallTicket API です。

テンプレート アプリのインストールと構成のインストール チケットを作成する方法のサンプルは、サンプル アプリケーションInstallTemplateApp/InstallAppFunction.cs ファイルから入手できます。

次のコード例は、テンプレート アプリ CreateInstallTicket REST API を使用する方法を示しています。

using Microsoft.PowerBI.Api.V2;
using Microsoft.PowerBI.Api.V2.Models;

// Create Install Ticket Request.
InstallTicket ticketResponse = null;
var request = new CreateInstallTicketRequest()
{
    InstallDetails = new List<TemplateAppInstallDetails>()
    {
        new TemplateAppInstallDetails()
        {
            AppId = Guid.Parse(AppId),
            PackageKey = PackageKey,
            OwnerTenantId = Guid.Parse(OwnerId),
            Config = new TemplateAppConfigurationRequest()
            {
                Configuration = Parameters
                                    .GroupBy(p => p.Name)
                                    .ToDictionary(k => k.Key, k => k.Select(p => p.Value).Single())
            }
        }
    }
};

// Issue the request to the REST API using .NET SDK.
InstallTicket ticketResponse = await client.TemplateApps.CreateInstallTicketAsync(request);

手順 3: チケットを使用してユーザーを Power BI にリダイレクトする

インストール チケットを作成したら、それを使用してユーザーを Power BI にリダイレクトし、テンプレート アプリのインストールと構成を続行します。 テンプレート アプリのインストール URL への POST メソッド リダイレクトを使用し、要求本文にインストール チケットを含めます。

POST要求を使用してリダイレクトを発行する方法については、文書化されたさまざまな方法があります。 どちらを選択するかは、シナリオと、ユーザーがポータルまたはサービスとやり取りする方法によって異なります。

テスト目的で主に使用される単純な例では、非表示フィールドを持つフォームが使用され、読み込み時に自動的に送信されます。

<html>
    <body onload='document.forms["form"].submit()'>
        <!-- form method is POST and action is the app install URL -->
        <form name='form' action='https://app.powerbi.com/....' method='post' enctype='application/json'>
            <!-- value should be the new install ticket -->
            <input type='hidden' name='ticket' value='H4sI....AAA='>
        </form>
    </body>
</html>

サンプル アプリケーションの応答の次の例では、インストール チケットが保持され、ユーザーが Power BI に自動的にリダイレクトされます。 この Azure 関数の応答は、前の HTML の例で示したのと同じ自動自己送信フォームです。

...
    return new ContentResult() { Content = RedirectWithData(redirectUrl, ticket.Ticket), ContentType = "text/html" };
}

...

public static string RedirectWithData(string url, string ticket)
{
    StringBuilder s = new StringBuilder();
    s.Append("<html>");
    s.AppendFormat("<body onload='document.forms[\"form\"].submit()'>");
    s.AppendFormat("<form name='form' action='{0}' method='post' enctype='application/json'>", url);
    s.AppendFormat("<input type='hidden' name='ticket' value='{0}' />", ticket);
    s.Append("</form></body></html>");
    return s.ToString();
}

POSTブラウザー リダイレクトを使用するさまざまな方法があります。 サービスのニーズと制限に応じて、常に最も安全な方法を使用する必要があります。 何らかの形式の安全でないリダイレクトにより、ユーザーまたはサービスがセキュリティの問題にさらされる可能性があることに注意してください。

手順 4: 自動化を運用環境に移行する

設計した自動化の準備ができたら、必ず運用環境に移行してください。