Résoudre les erreurs d'authentification des composants intégrés signés

Il peut être difficile de résoudre les erreurs d'authentification lorsque vous utilisez l'intégration signée pour votre contenu Looker. Vous pouvez essayer différentes approches pour diagnostiquer les problèmes. Vous choisirez une approche en fonction de l'endroit où vos redirections envoient vos utilisateurs. Les conseils de cette page supposent que vous générez votre URL d'intégration signée à l'aide d'un script semblable à ceux du dépôt GitHub d'exemples d'intégration de Looker , sauf indication contraire.

Premières étapes

Avant de commencer l'intégration, assurez-vous que votre secret d'intégration a été généré dans le panneau Admin et que votre contenu intégré fonctionne en mode production, et pas seulement en mode développement.

Si vous disposez des autorisations d'administrateur, sudo en tant qu'utilisateur d'intégration pour vérifier que votre contenu fonctionne. Si l'erreur Oops, we can't find that page s'affiche, le problème est probablement lié aux autorisations ou à l'accès au contenu, et non à un problème d'authentification. Si l'utilisateur d'intégration n'apparaît pas sur la page Users (Utilisateurs) du panneau Admin de Looker, cela signifie que l'utilisateur n'a pas été créé et que l'URL d'intégration échoue. Vous pouvez essayer de résoudre le problème à l'aide de certaines des suggestions et ressources listées sur cette page.

Si votre instance est auto-hébergée, assurez-vous que le serveur client peut atteindre le serveur Looker. Si les données entre le client et le serveur sont transmises sur l'Internet public, assurez-vous que le protocole SSL (HTTPS) est utilisé.

Le reste de cette page décrit les erreurs et autres problèmes que vous pouvez rencontrer, ainsi que les étapes à suivre pour les résoudre.

Je suis redirigé vers une page de connexion ou une page "Échec de l'authentification unique"

Si vous êtes redirigé vers la page de connexion ou vers une page contenant l'erreur Single sign on failure. Please contact an adinistrator., cela indique généralement que l'authentification d'intégration signée ne fonctionne pas correctement.

Commencez par générer une URL d'intégration signée et testez-la dans le validateur d'URI d'intégration sur la page Embed du panneau Admin de Looker. Le validateur d'URI d'intégration peut parfois révéler des informations utiles sur la raison pour laquelle vous rencontrez une erreur.

Le validateur d'URI d'intégration s'affiche-t-il comme prévu ?

Si vous vous trouvez sur la page Embed (Intégrer) du panneau Admin de Looker et que le validateur d'URI d'intégration n'apparaît pas sur la page, cela suggère que l'intégration signée n'a pas encore été activée. Vous devez activer l'intégration signée.

Je reçois l'erreur 'signature param' failed to authenticate

Si cette erreur s'affiche, la signature générée par votre script ne fonctionne pas comme prévu. Consultez les sections suivantes pour connaître les solutions possibles :

Les secrets d'intégration correspondent-ils ?

Le secret d'intégration de votre instance Looker doit être identique au secret d'intégration signé dans votre script de génération d'URL d'intégration signée. Si vous n'êtes pas sûr que ce soit le cas, sélectionnez Reset Secret (Réinitialiser le secret) pour générer un nouveau secret et l'ajouter à votre script. La réinitialisation de la clé interrompra toutes les intégrations qui utilisaient la clé précédente.

Notez que les secrets créés à l'aide de la page Embed (Intégrer) du panneau Admin sont générés à l'aide de l'algorithme HMAC-SHA1. Les secrets créés à l'aide du point de terminaison d'API create_embed_secret utilisent par défaut l'algorithme HMAC-SHA256. Assurez-vous que votre script d'intégration utilise l'algorithme approprié.

Essayez d'utiliser le point de terminaison Create Signed Embed Url pour créer votre URL d'intégration, en spécifiant le secret dans votre script pour le secret_id dans le corps de l'appel. La réponse vous indiquera si le secret que vous utilisez n'est pas valide. L'utilisation de ce point de terminaison évite également tout problème lié aux scripts qui utilisent un algorithme de signature incorrect.

La chaîne de signature est-elle dans le bon ordre ?

Les paramètres d'intégration de la chaîne de signature doivent être dans le bon ordre dans le script de génération d'URL. L'ordre approprié est documenté sur la page de documentation Intégration signée.

Une fois imprimée, la chaîne de signature doit se présenter comme suit avant d'être encodée :

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

Après avoir signé la chaîne de signature avec votre secret d'intégration, assurez-vous que les paramètres de l'URL finale correspondent à ceux spécifiés dans la chaîne de signature. Assurez-vous que les caractères spéciaux tels que + et / sont encodés dans les paramètres d'URL (par exemple, le + peut être interprété comme un espace s'il n'est pas correctement encodé) et qu'il n'y a pas de saut de ligne dans l'URL d'intégration signée, qui pourrait être manqué après l'encodage.

Comparez votre script avec nos exemples de scripts pour vérifier s'il suit toutes les étapes appropriées et si la signature utilise le chiffrement approprié.

Utilisez-vous une instance compatible avec la norme FIPS ?

Si votre instance Looker est compatible avec la norme FIPS, elle peut rejeter les signatures qui ne sont pas générées à l'aide d'un algorithme conforme à la norme FIPS. Pour en savoir plus sur les instances Looker compatibles avec la norme FIPS, consultez les pages de documentation suivantes :

Lorsque votre application d'intégration génère des URL d'intégration signées à l'aide d'un script pour les instances Looker (Google Cloud Core) compatibles avec la norme FIPS, l'environnement système côté client (tel que Ruby, Python, Node.js et l'installation OpenSSL locale) doit être configuré de manière stricte pour utiliser des modules cryptographiques conformes à la norme FIPS. Si ces exigences cryptographiques locales ne sont pas remplies dans l'environnement hôte qui génère l'URL, la signature générée ne sera pas valide, ce qui entraînera l'erreur 'signature' param failed to authenticate.

Pour éviter la complexité de la configuration et de la validation des modules cryptographiques locaux côté client, mettez à jour votre application d'intégration afin qu'elle utilise le create_sso_embed_url point de terminaison d'API pour générer l'URL d'intégration. Lorsque votre application d'intégration effectue l'appel d'API, spécifiez un secret SHA-256 pour le paramètre secret_id. L'API génère alors le chiffrement, plutôt que des fonctions cryptographiques locales.

Je reçois l'erreur This request includes invalid params: ["embed_domain"]

Avant de commencer à résoudre cette erreur, notez que le paramètre embed_domain n'est nécessaire que si votre script utilise des écouteurs d'événements JavaScript, ce qui n'est généralement pas une exigence pour une implémentation d'intégration signée de base. Si votre application n'a pas besoin d'écouter les événements JavaScript, l'option la plus simple consiste à supprimer complètement le paramètre embed_domain.

Si vous devez utiliser des événements JavaScript dans votre application d'intégration, vérifiez le script de génération d'URL pour voir où le paramètre embed_domain est ajouté. L'erreur signifie généralement que le paramètre embed_domain a été accidentellement placé en tant que paramètre d'intégration signée au lieu de directement dans le embed_url. Le script ne mettra pas en forme correctement le paramètre embed_domain s'il ne fait pas partie du embed_url. Il doit être ajouté après l'URL d'intégration et avant tout paramètre.

Voici à quoi cela devrait ressembler lorsque le paramètre embed_domain est spécifié correctement dans votre script :

  embed_url: "/embed/dashboards/3?embed_domain=https://company.com"
Si vous utilisez le point de terminaison Create Signed Embed Url, le paramètre embed_domain doit être placé à la fin du target_url.

Je reçois l'erreur 'nonce' param already used this hour

La valeur du paramètre nonce ne doit pas être répétée au cours de la même heure et doit comporter moins de 255 caractères. Par conséquent, cette erreur s'affiche si vous testez une URL qui a déjà été consultée. Assurez-vous de générer une nouvelle URL d'intégration qui n'a pas encore été chargée dans votre navigateur, et que le nonce change et n'est pas réutilisé.

Je suis redirigé vers une erreur Uh-Oh, Something went wrong

Si cette erreur s'affiche, veuillez contacter l'assistance Looker pour vous aider à diagnostiquer le problème.

Je suis redirigé vers une page contenant le message d'erreur 401 You are not authenticated to view this page.

Si vous avez essayé toutes les étapes de dépannage applicables et que le problème 401 persiste, il est probable que votre navigateur bloque les cookies tiers. La plupart des navigateurs deviennent plus restrictifs et utilisent par défaut une politique de cookies qui bloque ces cookies. Par exemple, le paramètre Prevent Cross-Site Tracking (Empêcher le suivi intersites) de Safari est activé par défaut, tout comme le paramètre Block third-party cookies in Incognito (Bloquer les cookies tiers en mode navigation privée) de Chrome.

Si votre application intègre du contenu Looker et que le nom de domaine de votre instance Looker se termine par company.looker.com, le navigateur n'authentifiera pas l'iframe intégrée sur plusieurs domaines, sauf si les paramètres de confidentialité des cookies du navigateur sont modifiés.

Instances hébergées par Looker

Les administrateurs d'instances hébergées par Looker qui ne souhaitent pas que leurs utilisateurs activent manuellement les cookies tiers dans leur navigateur devront modifier le nom de domaine de l'instance hébergée par Looker. Par exemple, les instances hébergées par Looker utilisent généralement le format https://<hostname>.<subdomain>.<domain>.com. Si le nom de domaine Looker est modifié, Looker ne sera plus considéré comme un domaine tiers. Pour en savoir plus, consultez la page Bonnes pratiques pour modifier l'URL d'une instance Looker.

Si vous souhaitez ajouter un domaine personnalisé pour votre instance Looker, contactez l'assistance Looker pour configurer le DNS nécessaire.

Instances auto-hébergées

Si vous auto-hébergez votre instance Looker, assurez-vous que votre application utilisant l'intégration signée se trouve sur le même domaine de base que votre instance Looker en modifiant les entrées DNS de votre instance Looker.

Chrome exige également que tout cookie de session avec l'indicateur samesite=none spécifie également secure. Looker ne signalera pas secure si votre instance Looker n'est pas fournie avec un --ssl-provided-externally-by=<s> indicateur de démarrage, alors assurez-vous que cet indicateur de démarrage est configuré.

Je rencontre toujours des problèmes. Que dois-je faire maintenant ?

Si vous rencontrez toujours des problèmes après avoir essayé les suggestions de cette page, veuillez contacter votre contact Looker ou accéder à l'assistance Looker pour ouvrir un ticket.