Fehler bei signierter Einbettungsauthentifizierung beheben

Die Behebung von Authentifizierungsfehlern kann eine Herausforderung sein, wenn Sie signierte Einbettungen für Ihre Looker-Inhalte verwenden. Es gibt verschiedene Ansätze, die Sie ausprobieren können, um Probleme zu diagnostizieren. Sie können den Ansatz basierend darauf auswählen, wohin Ihre Weiterleitungen Ihre Nutzer weiterleiten. Sofern nicht anders angegeben, wird in den Tipps auf dieser Seite davon ausgegangen, dass Sie die signierte Einbettungs-URL mit einem Script generieren, das dem im GitHub-Repository für Einbettungsbeispiele von Looker ähnelt.

Allgemeine Tipps, die Sie zuerst ausprobieren sollten

Bevor du mit dem Einbetten beginnst, musst du im Bereich Verwaltung ein Embed-Secret generieren und dafür sorgen, dass deine eingebetteten Inhalte nicht nur im Entwicklungsmodus, sondern auch im Produktionsmodus funktionieren.

Wenn du Administratorzugriff hast, kannst du sudo als Nutzer verwenden, der den Code eingebettet hat, um zu prüfen, ob deine Inhalte funktionieren. Wenn der Fehler Oops, we can't find that page angezeigt wird, liegt das Problem höchstwahrscheinlich an Berechtigungen oder dem Inhaltszugriff und nicht an einem Authentifizierungsproblem. Wenn der Nutzer für die Einbettung nicht auf der Seite Nutzer im Looker-Admin-Bereich angezeigt wird, wurde er nicht erstellt und die Einbettungs-URL funktioniert nicht. Sie können versuchen, das Problem mithilfe der auf dieser Seite aufgeführten Vorschläge und Ressourcen zu beheben.

Wenn Ihre Instanz selbst gehostet wird, müssen Sie dafür sorgen, dass der Client-Server den Looker-Server erreichen kann. Wenn die Daten zwischen dem Client und dem Server über das öffentliche Internet übertragen werden, muss SSL (HTTPS) verwendet werden.

Im Folgenden werden Fehler und andere Probleme beschrieben, die möglicherweise auftreten, sowie Schritte zur Behebung.

Ich werde entweder auf eine Anmeldeseite oder auf eine Seite mit der Meldung „Einmalanmeldung fehlgeschlagen“ weitergeleitet.

Wenn du zur Anmeldeseite oder zu einer Seite mit dem Fehler Single sign on failure. Please contact an adinistrator. weitergeleitet wirst, bedeutet dies in der Regel, dass die signierte Einbettungsauthentifizierung nicht richtig funktioniert.

Generieren Sie zuerst eine neue signierte Einbettungs-URL und testen Sie sie im Looker-Bereich Admin auf der Seite Embed (Einbetten) mit dem Tool Embed URI Validator. Der Embed-URI-Validator kann manchmal wertvolle Informationen dazu liefern, warum ein Fehler auftritt.

Wird der Embed-URI-Validator wie erwartet angezeigt?

Wenn Sie sich im Looker-Bereich Admin auf der Seite Einbetten befinden und der URI Validator zum Einbetten nicht angezeigt wird, bedeutet das, dass die signierte Einbettung noch nicht aktiviert wurde. Sie müssen die signierte Einbettung aktivieren.

Ich erhalte den Fehler 'signature param' failed to authenticate

Wenn dieser Fehler angezeigt wird, funktioniert die von Ihrem Script generierte Signatur nicht wie erwartet. In den folgenden Abschnitten finden Sie mögliche Lösungen:

Stimmen die Einbettungs-Secrets überein?

Das Secret für die Einbettung in Ihrer Looker-Instanz sollte mit dem signierten Einbettungs-Secret im Script zur Generierung der signierten Einbettungs-URL übereinstimmen. Wenn Sie nicht sicher sind, ob dies der Fall ist, wählen Sie Secret zurücksetzen aus, um ein neues Secret zu generieren und dem Script hinzuzufügen. Durch das Zurücksetzen des Schlüssels werden alle Einbettungen deaktiviert, die den vorherigen Schlüssel verwendet haben.

Verwende den Endpunkt Create Signed Embed Url, um die Embed-URL zu erstellen. Gib das Secret in deinem Script für die secret_id im Textkörper des Aufrufs an. In der Antwort wird angezeigt, ob das verwendete Secret ungültig ist.

Ist der Signaturstring in der richtigen Reihenfolge?

Die Einbettungsparameter im Signaturstring müssen im Script zur URL-Generierung in der richtigen Reihenfolge angegeben werden. Die richtige Reihenfolge ist auf der Seite Signed embedding (Signierte Einbettung) dokumentiert.

Der Signaturstring sollte vor der Codierung so aussehen:

  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"}
  {}

Nachdem Sie den Signaturstring mit Ihrem Einbettungs-Secret signiert haben, müssen die Parameter in der finalen URL mit den im Signaturstring angegebenen Parametern übereinstimmen. Achte darauf, dass Sonderzeichen wie + und / in den URL-Parametern codiert sind. Andernfalls wird das Zeichen + beispielsweise als Leerzeichen interpretiert. Außerdem dürfen in der signierten Embed-URL keine Zeilenumbrüche enthalten sein, da diese nach der Codierung übersehen werden könnten.

Vergleichen Sie Ihr Skript mit unseren Skriptbeispielen, um zu prüfen, ob es alle erforderlichen Schritte durchläuft und ob die Signatur die richtige Verschlüsselung verwendet.

Ich erhalte den Fehler This request includes invalid params: ["embed_domain"]

Bevor Sie mit der Fehlerbehebung dieses Fehlers beginnen, beachten Sie, dass der embed_domain-Parameter nur dann erforderlich ist, wenn Ihr Skript JavaScript-Ereignis-Listener verwendet, die für eine einfache signierte Einbettung in der Regel nicht erforderlich sind. Wenn Ihre Anwendung nicht auf JavaScript-Ereignisse warten muss, ist es am einfachsten, den Parameter embed_domain vollständig zu entfernen.

Wenn du JavaScript-Ereignisse in deiner eingebetteten Anwendung verwenden musst, sieh im URL-Generierungsskript nach, wo der Parameter embed_domain hinzugefügt wird. Dieser Fehler bedeutet normalerweise, dass der embed_domain-Parameter versehentlich als signierter Einbettungsparameter und nicht direkt im embed_url platziert wurde. Der embed_domain-Parameter wird vom Script nur dann richtig formatiert, wenn er tatsächlich Teil der embed_url ist. Er sollte nach der Einbettungs-URL und vor allen anderen Parametern eingefügt werden.

So sollte es aussehen, wenn der Parameter embed_domain in Ihrem Script korrekt angegeben ist:

  embed_url: "/embed/dashboards/3?embed_domain=https://company.com"
Wenn Sie den Endpunkt Create Signed Embed Url verwenden, sollte der Parameter embed_domain am Ende des target_url platziert werden.

Ich erhalte die Fehlermeldung 'nonce' param already used this hour.

Der Wert des Parameters nonce darf nicht innerhalb einer Stunde wiederholt werden und er muss weniger als 255 Zeichen umfassen. Dieser Fehler wird daher angezeigt, wenn Sie eine URL testen, auf die bereits zugegriffen wurde. Achte darauf, eine neue Einbettungs-URL zu generieren, die noch nicht in deinem Browser geladen wurde, und dass die Nonce geändert wird und nicht wiederverwendet wird.

Ich werde zu einer Uh-Oh, Something went wrong-Fehlerseite weitergeleitet

Wenn dieser Fehler angezeigt wird, wenden Sie sich bitte an den Looker-Support, um das Problem zu beheben.

Ich werde auf eine Seite mit der Fehlermeldung 401 weitergeleitet. You are not authenticated to view this page.

Wenn Sie alle relevanten Schritte zur Fehlerbehebung ausprobiert haben und das 401-Problem weiterhin besteht, blockiert Ihr Browser wahrscheinlich Cookies von Drittanbietern. Die meisten Browser werden immer restriktiver und verwenden standardmäßig eine Cookie-Richtlinie, die diese Cookies blockiert. So ist beispielsweise die Einstellung Websiteübergreifendes Tracking verhindern in Safari und die Einstellung Drittanbieter-Cookies im Inkognitomodus blockieren in Chrome standardmäßig aktiviert.

Wenn Ihre Anwendung Looker-Inhalte einbettet und der Domainname Ihrer Looker-Instanz auf company.looker.com endet, authentifiziert der Browser den eingebetteten iFrame nicht domainübergreifend, es sei denn, die Cookie-Datenschutzeinstellungen des Browsers werden geändert.

Von Looker gehostete Instanzen

Administratoren von Looker-gehosteten Instanzen, die nicht möchten, dass ihre Nutzer Drittanbieter-Cookies manuell in ihren Browsern aktivieren müssen, müssen den Domainnamen der Looker-gehosteten Instanz ändern. Von Looker gehostete Instanzen haben beispielsweise normalerweise das Format https://<hostname>.<subdomain>.<domain>.com. Wenn der Domainname von Looker geändert wird, wird Looker nicht mehr als Drittanbieterdomain betrachtet. Weitere Informationen finden Sie unter Was passiert, wenn sich die URL meiner Looker-Instanz ändert? Weitere Informationen finden Sie auf der Seite mit Best Practices.

Wenn Sie Ihrer Looker-Instanz eine benutzerdefinierte Domain hinzufügen möchten, wenden Sie sich an den Looker-Support, um die erforderliche DNS-Konfiguration einzurichten.

Selbst gehostete Instanzen

Wenn Sie Ihre Looker-Instanz selbst hosten, achten Sie darauf, dass sich Ihre Anwendung mit signiertem Einbetten in derselben Basisdomain wie Ihre Looker-Instanz befindet. Ändern Sie dazu die DNS-Einträge für Ihre Looker-Instanz.

Für Chrome muss außerdem für jedes Sitzungscookie mit dem Flag samesite=none secure angegeben werden. Looker sendet kein secure-Signal, wenn Ihrer Looker-Instanz kein --ssl-provided-externally-by=<s> Start-Flag zugewiesen ist. Achten Sie daher darauf, dass dieses Start-Flag konfiguriert ist.

Ich habe immer noch Probleme. Was kann ich jetzt tun?

Wenn nach der Umsetzung der Vorschläge auf dieser Seite weiterhin Probleme auftreten, wenden Sie sich an Ihren Looker-Ansprechpartner oder erstellen Sie ein Ticket beim Looker-Support.