署名付き埋め込み認証エラーのトラブルシューティング

Looker コンテンツに対して署名付き埋め込みを使用している場合、認証エラーのトラブルシューティングが難しくなる場合があります。問題の試行と診断にはいくつかの方法がありますが、リダイレクトの送信先に応じて方法を選択します。このページのヒントは、特に明記されていない限り、Looker の埋め込みの例の GitHub リポジトリにあるものと同様のスクリプトを使用して署名付き埋め込み URL を生成していることを前提としています。

まず試すこと

埋め込みを開始する前に、管理者パネルで埋め込みシークレットが生成され、Development Mode だけでなく本番環境モードで埋め込みコンテンツが機能することを確認してください。

管理者権限をお持ちの場合は、埋め込みユーザーとして sudo を使用して、コンテンツが機能していることを確認します。Oops, we can't find that page というエラーが表示された場合、問題は権限またはコンテンツ アクセスにある可能性が高く、認証の問題とは関係ありません。Looker の [管理者] パネルの [ユーザー] ページに埋め込みユーザーが表示されない場合、ユーザーは作成されておらず、埋め込み URL は失敗しています。このページに記載されている提案とリソースを使用して、問題のトラブルシューティングを試すことができます。

インスタンスがセルフホスト型の場合は、クライアント サーバーが Looker サーバーにアクセスできること、また、クライアントとサーバー間のデータが公共のインターネット経由で転送される場合は、SSL(HTTPS)が使用されていることを確認してください。

このページの残りの部分では、発生する可能性のあるエラーやその他の問題とその解決方法について説明します。

ログインページまたは「シングル サインオンエラー」ページにリダイレクトされる

ログインページまたは Single sign on failure. Please contact an adinistrator. エラーが表示されるページにリダイレクトされる場合は、通常、署名付き埋め込み認証が正常に動作していないことを示します。

まず、新しい署名付き埋め込み URL を生成し、Looker の [管理者] パネルの [埋め込み] ページの [埋め込み URI バリデータ] でテストします。埋め込み URI バリデータでは、エラーが発生した理由に関する有益な情報が表示される場合があります。

埋め込み URI 検証ツールは想定どおりに表示されていますか?

Looker の [管理者] パネルの [埋め込み] ページで、ページに埋め込み URI バリデータが表示されない場合は、署名付き埋め込みがまだ有効になっていない可能性があります。署名付き埋め込みを有効にする必要があります

'signature param' failed to authenticate エラーが表示される

このエラーが表示された場合は、スクリプトによって生成された署名が想定どおりに機能していません。考えられる解決策については、以下のセクションをご覧ください。

埋め込みシークレットは一致してますか?

Looker インスタンスの埋め込みシークレットは、署名付き埋め込み URL 生成スクリプト内の署名付き埋め込みシークレットと同じである必要があります。これが正しいかどうかわからない場合は、[シークレットをリセット] を選択して、新しいシークレットを生成してスクリプトに追加します。キーをリセットすると、古いキーを使用する埋め込みがすべて解除されます。

Create Signed Embed Url エンドポイントを使用して、埋め込み URL を作成します。呼び出しの本文で、secret_id のスクリプトにシークレットを指定します。レスポンスで、使用しているシークレットが無効であることが通知されます。

署名文字列が正しい順序で入力されていますか?

署名文字列の埋め込みパラメータは、URL 生成スクリプトの正しい順序で配置されている必要があります。適切な順序は、署名付き埋め込みのドキュメント ページに記載されています。

出力された署名文字列は、エンコードされる前に次のようになります。

  company_name.looker.com
  /login/embed/embed%2Fdashboards%2F123
  "ac786cbc06162b1edde3a8b35920a93e"
  15852443573600
  "test_external_user_id"
  ["access_data","see_user_dashboards"]
  ["test_model"]
  []
  "test group space"
  {"test_user_attribute":"yes"}
  {}

埋め込みシークレットで署名文字列に署名した後、最終ページ URL のパラメータが署名文字列で指定されたパラメータと一致することを確認します。+/ などの特殊文字が URL パラメータでエンコードされていることを確認します(たとえば、正しくエンコードされていない場合、+ はスペースとして解釈されることがあります)。また、署名付き埋め込み URL に改行がないことを確認します。これはエンコード後に欠落している可能性があります。

自分のスクリプトとスクリプトの例を比較して、自分のスクリプトが適切なすべての手順を実行しているかどうか、および署名が正しい暗号化を使用しているかどうかを確認します。

This request includes invalid params: ["embed_domain"] エラーが表示される

このエラーのトラブルシューティングを開始する前に、embed_domain パラメータが必要になるのは、JavaScript イベント リスナーを使用している場合に限ることに注意してください。これは通常、基本的な署名付き埋め込みの実装には必要ありません。アプリケーションで JavaScript イベントをリッスンする必要がない場合は、embed_domain パラメータを完全に削除することが一番簡単なオプションです。

埋め込みアプリケーションで JavaScript イベントを使用する必要がある場合は、URL 生成スクリプトを確認して、embed_domain パラメータが追加される場所を確認します。このエラーは通常、embed_domain パラメータが embed_url 内に直接ではなく、署名付き埋め込みパラメータとして誤って配置されたことを意味します。このスクリプトは、実際に embed_url の一部でない限り、embed_domain パラメータを正しくフォーマットしません。埋め込み URL の後とパラメータの前に追加する必要があります。

スクリプトで embed_domain パラメータが正しく指定されている場合は、次のようになります。

  embed_url: "/embed/dashboards/3?embed_domain=https://company.com"
Create Signed Embed Url エンドポイントを使用している場合、embed_domain パラメータは target_url の末尾に配置します。

'nonce' param already used this hour エラーが表示される

nonce パラメータの値を同じ時間内に繰り返すことはできません。また、255 文字以下にする必要があります。そのため、すでにアクセスしている URL をテストすると、このエラーが表示されます。ブラウザにまだ読み込まれていない、新しい埋め込み URL を生成して、ノンスが変更され、再利用されていないことを確認します。

Uh-Oh, Something went wrong エラーにリダイレクトされる

このエラーが表示された場合は、Looker サポートに連絡して問題の診断を依頼してください。

401 エラー メッセージ You are not authenticated to view this page. が表示されたページにリダイレクトされる

適用可能なすべてのトラブルシューティング手順を試しても 401 の問題が解決しない場合は、ブラウザがサードパーティの Cookie をブロックしている可能性があります。ほとんどのブラウザは制限が厳しくなってきており、デフォルトで、これらの Cookie をブロックする Cookie ポリシーが設定されます。たとえば、Chrome の [シークレット モードにおけるサードパーティ Cookie をブロックする] 設定と同様に、Safari の [クロスサイト トラッキングを防ぐ] 設定はデフォルトで有効になっています。

アプリケーションに Looker コンテンツが埋め込まれており、Looker インスタンスのドメイン名が company.looker.com で終わる場合、ブラウザの Cookie プライバシー設定を変更しない限り、ブラウザは埋め込み iframe を認証しません。

Looker がホストするインスタンス

ユーザーがブラウザでサードパーティの Cookie を手動で有効にしたくない場合、Looker がホストする管理者は、Looker がホストするインスタンスのドメイン名を変更する必要があります。たとえば、Looker がホストするインスタンスは通常、https://<hostname>.<subdomain>.<domain>.com の形式になります。Looker のドメイン名を変更すると、Looker はサードパーティ ドメインとみなされなくなります。Looker インスタンスの URL が変更された場合をご覧ください。ベスト プラクティス ページで詳細を確認してください。

Looker インスタンスにカスタム ドメインを追加する場合は、Looker サポートに連絡し、必要な DNS 構成を設定します。

セルフホストのインスタンス

Looker インスタンスをセルフホストする場合は、Looker インスタンスの DNS エントリを変更して、署名付き埋め込みを使用するアプリケーションが Looker インスタンスと同じベースドメイン上にあることを確認します。

また、Chrome では、samesite=none フラグが設定されたセッション Cookie でも secure を指定する必要があります。Looker インスタンスに --ssl-provided-externally-by=<s> 起動フラグが指定されていない場合、Looker は secure を通知しないため、この起動フラグが構成されていることを確認してください。

それでも問題が解決しない場合は、どうすればよいですか?

このページの提案を試しても問題が解決しない場合は、Looker の担当者に問い合わせるか、Looker サポートにアクセスしてチケットをオープンします。