Fehlerbehebung bei Authentifizierungsfehlern für signierte Einbettungen

Die Fehlerbehebung bei Authentifizierungsfehlern kann schwierig sein, wenn Sie signierte Einbettungen für Ihre Looker-Inhalte verwenden. Es gibt verschiedene Ansätze, um Probleme zu diagnostizieren. Sie wählen einen Ansatz basierend darauf aus, wohin Ihre Weiterleitungen Ihre Nutzer senden. Sofern nicht anders angegeben, wird auf dieser Seite davon ausgegangen, dass Sie Ihre signierte Einbettungs-URL mit einem Skript ähnlich dem im GitHub-Repository mit Looker-Einbettungsbeispielen generieren.

Allgemeine Dinge, die Sie zuerst versuchen sollten

Bevor Sie mit dem Einbetten beginnen, prüfen Sie, ob Ihr Einbettungs-Secret im Admin -Bereich generiert wurde und ob Ihre eingebetteten Inhalte im Produktionsmodus und nicht nur im Entwicklungsmodus funktionieren.

Wenn Sie Administratorberechtigungen haben, verwenden Sie sudo als Einbettungsnutzer, um zu prüfen, ob Ihre Inhalte funktionieren. Wenn der Fehler Oops, we can't find that page angezeigt wird, liegt das Problem höchstwahrscheinlich an Berechtigungen oder dem Zugriff auf Inhalte und nicht an einem Authentifizierungsproblem. Wenn der Einbettungsnutzer auf der Seite Nutzer im Admin -Bereich von Looker nicht angezeigt wird, wurde der Nutzer nicht erstellt und die Einbettungs-URL funktioniert nicht. Sie können versuchen, das Problem mit einigen der Vorschläge und Ressourcen auf dieser Seite zu beheben.

Wenn Ihre Instanz selbst gehostet wird, prüfen Sie, ob der Client-Server den Looker-Server erreichen kann. Wenn die Daten zwischen dem Client und dem Server über das öffentliche Internet übertragen werden, prüfen Sie, ob SSL (HTTPS) verwendet wird.

Im Rest dieser Seite werden Fehler und andere Probleme beschrieben, die auftreten können, sowie die Schritte zur Behebung.

Ich werde entweder zu einer Anmeldeseite oder zu einer Seite mit dem Fehler „Single sign-on failure“ weitergeleitet

Wenn Sie zur Anmeldeseite oder zu einer Seite mit dem Fehler Single sign on failure. Please contact an adinistrator. weitergeleitet werden, funktioniert die Authentifizierung für signierte Einbettungen in der Regel nicht richtig.

Generieren Sie zuerst eine neue signierte Einbettungs-URL und testen Sie sie im Embed URI Validator auf der Seite Einbetten im Admin -Bereich von Looker. Der Embed URI Validator kann manchmal wertvolle Informationen darüber liefern, warum ein Fehler auftritt.

Wird der Embed URI Validator wie erwartet angezeigt?

Wenn Sie sich auf der Seite Einbetten im Admin -Bereich von Looker befinden und der Embed URI Validator nicht auf der Seite angezeigt wird, wurde die signierte Einbettung noch nicht aktiviert. 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 Skript generierte Signatur nicht wie erwartet. Mögliche Lösungen finden Sie in den folgenden Abschnitten:

Stimmen die Einbettungs-Secrets überein?

Das Einbettungs-Secret in Ihrer Looker-Instanz muss mit dem signierten Einbettungs-Secret in Ihrem Skript zur Generierung der signierten Einbettungs-URL identisch sein. Wenn Sie sich nicht sicher sind, ob dies der Fall ist, wählen Sie Secret zurücksetzen aus, um ein neues Secret zu generieren und es Ihrem Skript hinzuzufügen. Wenn Sie den Schlüssel zurücksetzen, funktionieren alle Einbettungen nicht mehr, die den vorherigen Schlüssel verwendet haben.

Secrets, die über die Seite Einbetten im Admin -Bereich erstellt werden, werden mit dem HMAC-SHA1-Algorithmus generiert. Für Secrets, die mit dem create_embed_secret API-Endpunkt erstellt werden, wird standardmäßig der HMAC-SHA256-Algorithmus verwendet. Prüfen Sie, ob in Ihrem Einbettungsskript der richtige Algorithmus verwendet wird.

Verwenden Sie den Endpunkt Create Signed Embed Url, um Ihre Einbettungs-URL zu erstellen, und geben Sie das Secret in Ihrem Skript für die secret_id im Textkörper des Aufrufs an. In der Antwort erfahren Sie, ob das verwendete Secret ungültig ist. Mit diesem Endpunkt werden auch Probleme mit Skripts vermieden, die einen falschen Signaturalgorithmus verwenden.

Ist der Signaturstring in der richtigen Reihenfolge?

Die Einbettungsparameter im Signaturstring müssen im Skript zur URL-Generierung in der richtigen Reihenfolge sein. Die richtige Reihenfolge ist auf der Dokumentationsseite zur signierten Einbettung beschrieben.

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, prüfen Sie, ob die Parameter in der finalen URL mit den im Signaturstring angegebenen Parametern übereinstimmen. Achten Sie darauf, dass Sonderzeichen wie + und / in den URL-Parametern codiert sind. Andernfalls kann beispielsweise + als Leerzeichen interpretiert werden. Außerdem dürfen in der signierten Einbettungs-URL keine Zeilenumbrüche vorhanden sein, die nach der Codierung möglicherweise nicht mehr sichtbar sind.

Vergleichen Sie Ihr Skript mit unseren Skriptbeispielen, um zu prüfen, ob alle Schritte korrekt ausgeführt werden und ob für die Signatur die richtige Verschlüsselung verwendet wird.

Verwenden Sie eine FIPS-fähige Instanz?

Wenn Ihre Looker-Instanz FIPS-fähig ist, werden möglicherweise Signaturen abgelehnt, die nicht mit einem FIPS-konformen Algorithmus generiert wurden. Weitere Informationen zu FIPS-fähigen Looker-Instanzen finden Sie auf den folgenden Dokumentationsseiten:

Um Probleme bei der Signaturgenerierung auf FIPS-fähigen Instanzen zu vermeiden, können Sie den API-Endpunkt „Create Signed Embed Url“ verwenden, um die Einbettungs-URL zu generieren.

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

Bevor Sie mit der Fehlerbehebung beginnen, beachten Sie, dass der embed_domain Parameter nur erforderlich ist, wenn Ihr Skript JavaScript-Event-Listener verwendet. Das ist in der Regel keine Voraussetzung für eine einfache signierte Einbettung. Wenn Ihre Anwendung keine JavaScript-Ereignisse abhören muss, ist es am einfachsten, den Parameter embed_domain vollständig zu entfernen.

Wenn Sie JavaScript-Ereignisse in Ihrer Einbettungsanwendung verwenden müssen, prüfen Sie im Skript zur URL-Generierung, wo der Parameter embed_domain hinzugefügt wird. Der Fehler bedeutet in der Regel, dass der Parameter embed_domain versehentlich als signierter Einbettungsparameter anstelle direkt in der embed_url platziert wurde. Das Skript formatiert den Parameter embed_domain nur dann richtig, wenn er tatsächlich Teil der embed_url ist. Er sollte nach der Einbettungs-URL und vor allen Parametern hinzugefügt werden.

So sollte es aussehen, wenn der Parameter embed_domain in Ihrem Skript richtig 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 der target_url platziert werden.

Ich erhalte den Fehler 'nonce' param already used this hour

Der Wert des nonce Parameters darf innerhalb derselben Stunde nicht wiederholt werden und muss weniger als 255 Zeichen lang sein. Daher wird dieser Fehler angezeigt, wenn Sie eine URL testen, auf die bereits zugegriffen wurde. Achten Sie darauf, dass Sie eine neue Einbettungs-URL generieren, die noch nicht in Ihrem Browser geladen wurde, und dass sich die Nonce ändert und nicht wiederverwendet wird.

Ich werde zu einem Fehler Uh-Oh, Something went wrong weitergeleitet

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

Ich werde zu einer Seite mit der 401-Fehlermeldung You are not authenticated to view this page. weitergeleitet

Wenn Sie alle anwendbaren Schritte zur Fehlerbehebung ausgeführt haben und das Problem mit dem Fehler 401 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. Beispielsweise ist die Einstellung Websiteübergreifendes Tracking verhindern in Safari standardmäßig aktiviert, ebenso die Einstellung Drittanbieter-Cookies im Inkognitomodus blockieren in Chrome.

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 von Looker gehosteten Instanzen, die nicht möchten, dass ihre Nutzer Cookies von Drittanbietern manuell in ihren Browsern aktivieren, müssen den Domainnamen der von Looker gehosteten Instanz ändern. Von Looker gehostete Instanzen haben in der Regel das Format https://<hostname>.<subdomain>.<domain>.com. Wenn der Looker-Domainname geändert wird, gilt Looker nicht mehr als Drittanbieterdomain. Weitere Informationen finden Sie auf der Seite Best Practices zum Ändern der URL einer Looker-Instanz.

Wenn Sie eine benutzerdefinierte Domain für Ihre Looker-Instanz 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, die signierte Einbettungen verwendet, in derselben Basisdomain wie Ihre Looker-Instanz befindet. Ändern Sie dazu die DNS-Einträge für Ihre Looker-Instanz.

Chrome muss für alle Sitzungscookies mit dem samesite=none Flag auch secure angegeben werden. Looker signalisiert secure nicht, wenn für Ihre Looker-Instanz kein --ssl-provided-externally-by=<s> Startflag angegeben ist. Achten Sie also darauf, dass dieses Startflag konfiguriert ist.

Ich habe immer noch Probleme. Was soll ich tun?

Wenn Sie nach dem Ausprobieren der Vorschläge auf dieser Seite immer noch Probleme haben, wenden Sie sich an Ihren Looker-Ansprechpartner oder öffnen Sie ein Ticket beim Looker-Support.