埋め込みアプリケーションのトラブルシューティング
この記事では、Power BI からコンテンツを埋め込むときに発生する可能性がある一般的な問題について説明します。
トラブルシューティング ツール
Fiddler のトレース
Fiddler は、HTTP トラフィックを監視する Telerik の無料ツールです。 クライアント コンピューターから Power BI API を使用してトラフィックを確認できます。 このツールでは、エラーやその他の関連情報が表示される場合があります。
フロントエンド デバッグ用のブラウザーの F12
F12 キーを押すと、ブラウザー内で開発者ウィンドウが起動します。 このツールを使用すると、ネットワーク トラフィックを確認したり、その他の重要な情報を確認したりできます。
Power BI 応答からエラーの詳細を抽出する
このコード スニペットは、HTTP 例外からエラーの詳細を抽出する方法を示しています。
public static string GetExceptionText(this HttpOperationException exc)
{
var errorText = string.Format("Request: {0}\r\nStatus: {1} ({2})\r\nResponse: {3}",
exc.Request.Content, exc.Response.StatusCode, (int)exc.Response.StatusCode, exc.Response.Content);
if (exc.Response.Headers.ContainsKey("RequestId"))
{
var requestId = exc.Response.Headers["RequestId"].FirstOrDefault();
errorText += string.Format("\r\nRequestId: {0}", requestId);
}
return errorText;
}
要求 ID (およびトラブルシューティングのためのエラーの詳細) をログに記録することをお勧めします。 Microsoft サポートに近づくときに要求 ID を指定します。
アプリの登録
アプリの登録エラー
アプリを登録するための十分な権限がない場合は、Azure portal または Power BI アプリ登録ページ内のエラー メッセージから通知されます。 アプリケーションを登録するには、Microsoft Entra テナントの管理者である必要があります。または、管理者以外のユーザーに対してアプリケーションの登録を有効にする必要があります。
新しいアプリを登録するときに、Power BI サービスが Azure portal に表示されない
少なくとも 1 人のユーザーが Power BI にサインアップしている必要があります。 Power BI サービス API の一覧に表示されない場合、ユーザーは Power BI にサインアップしていません。
アプリケーション オブジェクト ID とプリンシパル オブジェクト ID の違いは何ですか?
Microsoft Entra アプリを登録すると、オブジェクト IDと呼ばれる 2 つのパラメーターがあります。 このセクションでは、各パラメーターの目的と、それを取得する方法について説明します。
アプリケーション オブジェクト ID
アプリケーション オブジェクト ID (単に オブジェクト IDとも呼ばれます) は、Microsoft Entra アプリケーション オブジェクトの一意の ID です。
アプリケーション オブジェクト ID を取得するには、Microsoft Entra アプリに移動し、概要からコピーします。
主体オブジェクトID
プリンシパル オブジェクト ID (オブジェクト IDとも呼ばれます) は、Microsoft Entra アプリケーションに関連付けられている サービス プリンシパル オブジェクト 一意の ID です。
プリンシパル オブジェクト ID を取得するには、Microsoft Entra アプリに移動し、の [概要]から、ローカル ディレクトリ のマネージド アプリケーションアプリ のリンクを選択します。
[プロパティ ] セクションから、オブジェクト IDをコピーします。
認証
AADSTS70002またはAADSTS50053で認証に失敗しました
(AADSTS70002: 資格情報の検証中にエラーが発生しました。AADSTS50053: 正しくないユーザー ID またはパスワードで何度もサインインしようとしました)
Power BI Embedded と Microsoft Entra ダイレクト認証を使用している場合は、直接認証が有効になっていないため、サインインしようとすると前のメッセージのようなメッセージが表示されることがあります。
直接認証を有効に戻すには、組織を対象とする Microsoft Entra ポリシー を使用するか、サービス プリンシパルを使用します。
このポリシーは、アプリごとにのみ有効にすることをお勧めします。
このポリシーを作成するには、ポリシーを作成して割り当てるディレクトリの グローバル管理者 である必要があります。 ポリシーを作成し、このアプリケーションの SP に割り当てるためのサンプル スクリプトを次に示します。
Microsoft Graph PowerShell SDKをインストールします。
次の PowerShell コマンドを 1 行ずつ実行します (結果として、変数
$sp
に複数のアプリケーションが含まれていないことを確認します)。Connect-MgGraph -Scopes "Directory.Read.All","Policy.ReadWrite.ApplicationConfiguration" $sp = Get-MgServicePrincipal -Filter "DisplayName eq 'Name_Of_Application'" $policy = New-MgBetaPolicyActivityBasedTimeoutPolicy -Definition @("{`"AllowCloudPasswordValidation`":true}") ` -DisplayName EnableDirectAuth -IsOrganizationDefault:$false $params = @{ "@odata.id" = "https://graph.microsoft.com/v1.0/policies/claimsMappingPolicies/$policy.Id" } New-MgBetaServicePrincipalClaimMappingPolicyByRef -ServicePrincipalId $sp.Id ` -BodyParameter $params
ポリシーを割り当てた後、反映されるまで約 15 ~ 20 秒待ってからテストします。
有効な ID を指定するときにトークンの生成が失敗する
GenerateToken
は、いくつかの異なる理由により、有効なアイデンティティが提供されても失敗する可能性があります。
- セマンティック モデルでは、有効な ID はサポートされていません。
- ユーザー名が指定されませんでした。
- ロールが指定されていない。
DatasetId
は提供されませんでした。- ユーザーに適切なアクセス許可がありません。
問題を特定するには、次の手順を試してください。
- データセットの取得を実行します。 プロパティ
IsEffectiveIdentityRequired
は true ですか? - ユーザー名は任意の
EffectiveIdentity
に必要です。 IsEffectiveIdentityRolesRequired
が true の場合は、ロールが必要です。EffectiveIdentity
にはDatasetId
が必要です。- Analysis Services の場合、マスター ユーザーはゲートウェイ管理者である必要があります。
AADSTS90094: 許可には管理者アクセス許可が必要です
症状:
管理者以外のユーザーが、同意を与えながら初めてアプリケーションにサインインしようとすると、次のいずれかのエラーが発生します。
-
ConsentTest needs permission to access resources in your organization that only an admin can grant. Ask an admin to grant permission to this app before you can use it.
-
AADSTS90094: The grant requires admin permission.
管理者ユーザーはサインインし、同意を正常に付与できます。
根本原因:
テナントに対してユーザーの同意が無効になっています。
いくつかの修正が可能です:
- テナント全体 (すべてのユーザー、すべてのアプリケーション) に対してユーザーの同意を有効にします。
- Azure portal で、Microsoft Entra ID>[ユーザーとグループ]>[ユーザー設定]に移動します。
- ユーザーが自分の代わりに会社のデータにアクセスするアプリに同意 設定を有効にし、変更を保存します。
- 管理者は、テナント全体または特定のユーザーに対して、アプリケーションにアクセス許可を付与できます。
CS1061 エラー
次の エラーが発生した場合は、Microsoft.IdentityModel.Clients.ActiveDirectory をダウンロードします。
'AuthenticationContext' does not contain a definition for 'AcquireToken' and no accessible 'AcquireToken' accepting a first argument of type 'AuthenticationContext' could be found (are you missing a using directive or an assembly reference?)
別のテナント (ゲスト ユーザー) の Microsoft Entra トークン
組織向けに埋め込む ときに、Microsoft Entra のゲスト ユーザーがコンテンツにアクセスできるようにするには、authorityUri
パラメータでテナント ID を指定する必要があります。
組織のテナントで認証するための URL:
https://login.microsoftonline.com/common/v2.0
ゲスト Microsoft Entra ユーザーを認証するための URL:
https://login.microsoftonline.com/<tenant ID>
テナント ID を見つけるには、「Microsoft Entra テナント ID とプライマリ ドメイン名を検索する」の手順使用できます。
詳細については、「アプリケーションのマルチテナント の作成」を参照してください。
データ ソース
ISV は、同じデータ ソースに対して異なる資格情報を持つ必要がある
データ ソースは、1 人のマスター ユーザーに対して 1 つの資格情報セットを持つことができます。 別の資格情報を使用する必要がある場合は、より多くのマスター ユーザーを作成します。 次に、各マスター ユーザーのコンテキストに異なる資格情報を割り当て、そのユーザーの Microsoft Entra トークンを使用して埋め込みます。
IError オブジェクトを使用して埋め込みアプリケーションのトラブルシューティングを行う
JavaScript SDK からエラー イベントによって返された IError オブジェクトを使用して、アプリケーションをデバッグし、エラーの原因をより深く理解します。
IError オブジェクトを取得した後は、使用している埋め込み型に合った適切な一般的なエラー テーブルを確認する必要があります。 IError プロパティとテーブル内のプロパティを比較し、エラーの考えられる理由を見つけます。
Power BI ユーザーの埋め込み時の一般的なエラー
メッセージ | 詳細メッセージ | エラー コード | 考えられる理由 |
---|---|---|---|
トークンの有効期限が切れました | アクセス トークンの有効期限が切れています。新しいアクセス トークンを使用して再送信します | 403 | 期限切れのトークン |
PowerBIEntityNotFound (Power BI エンティティが見つかりません) | レポートの取得に失敗しました | 404 | |
無効なパラメーター | powerbiToken パラメーターが指定されていません | N/A | |
レポートの読み込みに失敗しました | 初期化に失敗する - クラスターを解決できませんでした | 403 | |
PowerBINotAuthorizedException | レポートの取得に失敗しました | 401 | |
トークンの有効期限切れ | アクセス トークンの有効期限が切れています。新しいアクセス トークンを使用して再送信します。 タイトル付きのレポート ビジュアルをレンダリングできませんでした: ビジュアル タイトル | N/A | |
OpenConnectionError | ビジュアルを表示できません。 タイトル付きのレポート ビジュアルをレンダリングできませんでした: ビジュアル タイトル | N/A | 容量に関連するレポートがセッションで開かれている間、容量が一時停止または削除されました |
ExplorationContainer_FailedToLoadModel_DefaultDetails | このレポートに関連付けられているモデル スキーマを読み込めませんでした。 サーバーへの接続があることを確認してから、もう一度やり直してください。 | N/A |
Power BI 以外のユーザーの埋め込み時の一般的なエラー (埋め込みトークンを使用)
メッセージ | 詳細メッセージ | エラー コード | 考えられる理由 |
---|---|---|---|
トークンの有効期限が切れました | アクセス トークンの有効期限が切れています。新しいアクセス トークンを使用して再送信します | 403 | 期限切れのトークン |
レポートのロードに失敗しました | レポートの取得に失敗しました | 404 | |
レポートの読み込みに失敗しました | レポートの取得に失敗しました | 403 | レポート ID がトークンと一致しない |
レポートの読み込みに失敗しました | レポートの取得に失敗しました | 500 | レポートが指定した ID が GUID ではありません |
無効なパラメーター | powerbiToken パラメーターが指定されていません | N/A | |
レポートの読み込みに失敗しました | 初期化に失敗する - クラスターを解決できませんでした | 403 | トークンの種類が正しくないか、トークンが正しくありません |
PowerBINotAuthorizedException | レポートの取得に失敗しました | 401 | 間違った/承認されていないグループ ID |
トークンの有効期限が切れました | アクセス トークンの有効期限が切れています。新しいアクセス トークンを使用して再送信します。 タイトル付きのレポート ビジュアルをレンダリングできませんでした: ビジュアル タイトル | N/A | |
OpenConnectionError | ビジュアルを表示できません。 タイトル付きのレポート ビジュアルをレンダリングできませんでした: ビジュアル タイトル | N/A | 容量に関連するレポートがセッションで開かれている間、容量が一時停止または削除されました |
ExplorationContainer_FailedToLoadModel_DefaultDetails | このレポートに関連付けられているモデル スキーマを読み込めませんでした。 サーバーへの接続があることを確認してから、もう一度やり直してください。 | N/A |
レポートの取得に失敗 - エラー 401 - 自動的に解決される
ユーザーがデータ を所有しているシナリオでは、Power BI ポータルにアクセスした後に解決される 401 エラーが時々発生することがあります。 401 エラーが発生した場合は、「ユーザーのアクセス許可を更新する」で説明されているように、RefreshUser Permissions 呼び出しをアプリに追加します。
セマンティック モデル
ユーザーが表示できるデータの部分を管理する
セマンティック モデルの読み取りアクセス許可を持つすべてのユーザーは、スキーマ全体 (テーブル、列、メジャー) とすべてのデータを表示できます。 同じセマンティック モデルでは、生データと集計データに対する表示アクセス許可を個別に制御することはできません。
ユーザーが表示できるデータの部分を管理するには、次のいずれかの方法を使用します。
Power BI 行レベル セキュリティ (RLS)を使用した行レベルのフィルター処理。
データを異なるセマンティック モデルに分割します。 たとえば、集計データのみを含むセマンティック モデルを作成し、そのセマンティック モデルのみにアクセスできるようにすることができます。
コンテンツのレンダリング
埋め込み Power BI 項目 (レポートやダッシュボードなど) のレンダリングの問題を解決するには、このセクションを確認してください。
Power BI サービスで Power BI 項目が読み込まれることを確認する
アプリケーション または埋め込み APIに関する問題を除外するには、Power BI サービス (powerbi.com) でその項目を表示できることを確認します。
Power BI 埋め込み分析プレイグラウンドに Power BI 項目が読み込まれることを確認する
アプリケーションの問題を除外するには、Power BI 埋め込み分析プレイグラウンド で Power BI 項目を表示できることを確認します。
アクセス トークンの有効期限が切れていなかったことを確認する
セキュリティ上の理由から、アクセス トークン (Microsoft Entra トークンまたは埋め込みトークン) の有効期間は限られています。 アクセス トークンは常に監視し、必要に応じて更新する必要があります。 詳細については、「アクセス トークンを更新する」を参照してください。
パフォーマンス
最適なパフォーマンスの埋め込みコンテンツを取得するには、Power BI 埋め込み分析のベスト プラクティスに従うことをお勧めします。
関連コンテンツ
Power BI Embedded についてよく寄せられる質問
その他の質問 Power BI コミュニティに質問する