Résolution des problèmes d'authentification unique
Activez la journalisation des événements pour résoudre les problèmes liés à l'authentification unique. Pour cela, utilisez un fichier logback.xml standard dans le répertoire ThingworxPlatform. Si un fichier logback.xml existe à cet emplacement, vous pouvez simplement ajouter les enregistreurs SSO au jeu d'enregistreurs existant. Pour plus d'informations sur le fichier logback.xml, consultez la rubrique Configuration de la journalisation.
La fonctionnalité logback.xml est une norme Java. Pour obtenir des instructions relatives à la configuration de ces fichiers, consultez la documentation Java.
La table suivante fournit des informations sur les packages d'enregistreur pouvant être ajoutés afin d'identifier les problèmes liés à votre configuration de l'authentification unique d'ThingWorx :
D'autres cas d'utilisation sont disponibles sur le site de support IAM.
Package
Description
com.thingworx.security.authentication.sso
Package pour tous les composants d'authentification unique d'ThingWorx. Les exemples suivants constituent des entrées dans les packages d'enregistreur :
Pour les messages consignés dans le journal de l'application :
LogUtilities.getInstance().getApplicationLogger([class name]):
<logger name="com.thingworx.security.authentication.sso" level="DEBUG"/>
Les enregistreurs de sécurité sont utilisés dans de nombreuses classes de ce package. Par exemple :
LogUtilities.getInstance().getSecurityLogger(ThingworxSSOAuthenticator.class);
Pour activer ces enregistreurs, ajoutez SecurityLog en tant qu'enregistreur parent racine :
<logger name="SecurityLog.com.thingworx.security.authentication.sso" level="DEBUG"/>
SecurityLog.com.thingworx.security.sso
Package pour les processus d'autorisation déléguée utilisés par les connecteurs intégrés lors de l'obtention des jetons d'accès et de leurs configurations
com.thingworx.ptc.eauth.identity
Package pour tous les principaux composants de la bibliothèque SSO PTC
com.springframework.security
Package pour tous les composants de sécurité du framework Spring
com.springframework.jdbc
Package pour tous les composants d'authentification JDBC du framework Spring
Si votre implémentation de l'authentification unique entraîne des erreurs, vous pouvez passer en revue les éléments de résolution des problèmes suivants.
Problème
L'administrateur ThingWorx ne parvient pas à se connecter. Une erreur Invalid_scope est reçue.
Description
Une fois connecté, l'utilisateur est redirigé vers une page d'erreur ThingWorx indiquant que le système rencontre actuellement une erreur de configuration de l'authentification.
Solution
Une ou plusieurs des étendues enregistrées dans une entité de média ou un connecteur d'intégration ThingWorx ne correspondent pas aux étendues enregistrées sur PingFederate (ou le CAS que vous avez sélectionné). Cette discordance d'étendues par rapport à PingFederate peut entraîner le verrouillage du compte de l'administrateur ThingWorx. Les étendues du serveur de ressources enregistrées dans ThingWorx peuvent être consultées dans le journal de sécurité. Procédez comme suit pour résoudre ce problème :
1. Accédez à PingFederate et comparez les étendues consignées dans le journal de sécurité ThingWorx avec celles de PingFederate. Pour les étendues dans ThingWorx qui ne sont pas enregistrées sur PingFederate ou dont les noms ne correspondent pas, ajoutez les étendues sur le serveur PingFederate ou modifiez leur nom de façon à ce qu'ils correspondent à ceux d'ThingWorx (même s'il ne s'agit pas de la bonne orthographe des étendues).
2. La page d'autorisation d'accès fonctionne désormais correctement et vous pouvez vous connecter à ThingWorx en tant qu'administrateur. Dans ThingWorx, accédez à l'entité de média ou au connecteur d'intégration qui essaie d'utiliser l'étendue qui génère l'erreur. Supprimez cette dernière de la table d'enregistrement des étendues pour le connecteur d'intégration ou l'entité de média. Ouvrez une nouvelle session d'ThingWorx pour vérifier que la connexion a réussi.
3. Lorsqu'ThingWorx essaie d'utiliser une étendue non enregistrée, supprimez-la depuis la page de gestion des étendues de PingFederate. En cas de discordance des noms de l'étendue, supprimez-la et réenregistrez-la avec la bonne orthographe sur PingFederate, puis dans l'entité de média ou le connecteur d'intégration ThingWorx.
Problème
Le service sur une entité de média ou un connecteur intégré ne fonctionne pas. La récupération du jeton d'accès a échoué.
Description
Vous êtes connecté à ThingWorx et disposez déjà d'un jeton d'accès. Vous avez importé ou créé un connecteur avec une étendue, puis vous avez tenté d'exécuter en vain un service sur le connecteur.
Solution
Déconnectez-vous, puis reconnectez-vous pour ouvrir la page d'autorisation d'accès associée aux étendues de votre connecteur. Pour que les services fonctionnent, vous devez approuver l'attribution d'étendue qui vient d'être enregistrée.
Cela est également valable si vous importez ou créez des entités de média qui contiennent des étendues.
Problème
Erreurs d'initialisation du bean et du contexte de l'authentification unique au démarrage d'ThingWorx
Description
ThingWorx ne parvient pas à démarrer.
Solution
Consultez les journaux d'erreur pour déterminer le problème. Une description du problème est fournie à la fin du journal d'erreur ou d'avertissement relatif à l'initialisation du bean ou du contexte. Par exemple, une possible erreur pourrait être référencée comme suit :
SSOConfigurationException: BasicSettings > idpMetadataFilePath cannot be null or empty
Vérifiez la valeur du paramètre idpMetadataFilePath dans le fichier sso-settings.json, puis ajoutez la valeur appropriée.
Problème
L'application ou l'application composite d'ThingWorx ne se charge pas après que l'utilisateur a cliqué sur Don't allow pour les étendues demandées sur la page Request Grant Approval de PingFederate.
Description
Après avoir cliqué sur Don't allow sur la page Request Grant Approval, l'application composite ne se charge pas et l'URL du navigateur se termine avec une dièse ("#") et un point (".").
Solution
Par défaut, PingFederate utilise un point (".") comme marque de réservation de fragment, générant alors l'erreur rencontrée. Pour résoudre cela, procédez comme suit :
1. Dans l'emplacement d'installation de PingFederate, accédez à <PingFederateInstallation>\server\default\data\config-store\sanitize-fragments.xml.
2. Modifiez ce fichier XML et supprimez le point (".") de la marque de réservation de fragment. La ligne doit être comme suit : <con:item name="FragmentPlaceholder"></con:item>
3. Redémarrez le serveur PingFederate.
Problème
L'authentification SAML sur http://<votre serveur>:<port>/Thingworx/runtime/index.html#mashup=<MonApplicationComposite> entraîne une redirection vers http://<votre serveur>:<port>/Thingworx/runtime/index.html après connexion.
Description
Lors de la connexion sur l'URL d'une application composite, le fragment de l'URL (à savoir #mashup=<MonApplicationComposite>) n'est pas transmis au serveur ThingWorx ou au serveur d'authentification (ce qui permet la redirection appropriée après connexion), car le navigateur conserve ces données pour utilisation par le client uniquement. Ainsi, le serveur ThingWorx et le serveur d'authentification reçoivent l'URL sans le fragment (c'est-à-dire, http://<votre serveur>:<port>/Thingworx/runtime/index.html).
Solution
Pour les URL d'application composite utilisées en tant que point d'authentification initiale, construisez des URL avec des paramètres de requête et non des paramètres de fragment.
Dans ce cas, utilisez l'URL suivante : http://<votre serveur>:<port>/Thingworx/runtime/index.html?mashup=<MonApplicationComposite>.
Problème
A chaque connexion, la page Request Grant Approval de PingFederate s'affiche.
Description
PingFederate ne renvoie pas l'étendue à l'issue du processus d'approbation.
Solution
Sur PingFederate :
1. Créez ou modifiez le fichier oauth-scope-settings.xml disponible sous <dossier d'installation de PingFederate>/server/default/data/config-store comme suit :
<?xml version="1.0" encoding="UTF-8"?>
<z:config xmlns:z="http://www.sourceid.org/2004/05/config">
<z:item name="always-return-scope-for-authz-code">true</z:item>
</z:config>
2. Redémarrez PingFederate.
Problème
L'authentification SAML sur http://<votre serveur>:<port>/Thingworx/runtime/index.html#mashup=<MonApplicationComposite> entraîne une redirection vers http://<votre serveur>:<port>/Thingworx/runtime/index.html après connexion.
Description
Lors de la connexion sur l'URL d'une application composite, le fragment de l'URL (à savoir #mashup=<MonApplicationComposite>) n'est pas transmis au serveur ThingWorx ou au serveur d'authentification (ce qui permet la redirection appropriée après connexion), car le navigateur conserve ces données pour utilisation par le client uniquement. Ainsi, le serveur ThingWorx et le serveur d'authentification reçoivent l'URL sans le fragment (c'est-à-dire, http://<votre serveur>:<port>/Thingworx/runtime/index.html).
Solution
Pour les URL d'application composite utilisées en tant que point d'authentification initiale, construisez des URL avec des paramètres de requête et non des paramètres de fragment.
Dans ce cas, utilisez l'URL suivante : http://<votre serveur>:<port>/Thingworx/runtime/index.html?mashup=<MonApplicationComposite>.
Problème
L'erreur suivante s'affiche dans le fichier server.log de PingFederate :
ERROR [SpringLdapGuidFormatter] Decoded binary guidAttribute is empty. Please check that the source datastore is configured with 'objectGUID' as a binary attribute. [] Channel: channel1
Description
En raison des modifications apportées à PingFed 11.3, SCIM doit être configuré manuellement.
Solution
Suivez les étapes indiquées à la rubrique Ajouter des attributs binaires LDAP.
Problème
Lorsqu'AzureAD est configuré en tant que serveur d'autorisation centralisée, l'utilisateur final ne peut pas obtenir de données auprès du serveur de ressources (RS) à l'aide d'un type de connexion SSO basé sur les connecteurs ThingWorx (car le jeton d'accès a expiré).
Description
Le fichier SecurityLog.log affiche l'erreur suivante.
ERROR: [ Failed to retrieve access token. ][ A redirect is required to get the users approval ]
Solution
Définissez la propriété mandatoryScopes sous AuthorizationServersSettings dans le fichier sso-settings.json pour qu'elle inclue offline_access.
Est-ce que cela a été utile ?