Configuration du fichier sso-settings.json
* 
Suivez les étapes relatives à ThingWorx Flow si vous utilisez une version antérieure à ThingWorx Flow9.2. Les étapes sont automatisées dans ThingWorx Flow 9.2. Si vous avez installé ThingWorx Flow, vous devez arrêter tous les services ThingWorx Foundation et ThingWorx Flow, y compris RabbitMQ et Nginx, avant de configurer le fichier sso-settings.json. Après avoir configuré ce fichier, vous devez d'abord redémarrer RabbitMQ, puis tous les services ThingWorx Foundation et ThingWorx Flow, y compris Nginx.
Créez le fichier sso-settings.json dans le répertoire ssoSecurityConfig.
Si votre environnement nécessite un chemin d'accès différent, définissez la valeur de la variable d'environnement THINGWORX_SSO_SETTINGS pour enregistrer le fichier sso-settings.json à un autre emplacement.
Voici un exemple de structure du fichier sso-settings.json :
{
"BasicSettings": {
"clientBaseUrl": "Voir les informations fournies dans la table ci-dessous",
"idpMetadataFilePath": "Voir les informations fournies dans la table ci-dessous",
"metadataEntityId": "Voir les informations fournies dans la table ci-dessous",
"metadataEntityBaseUrl": "Voir les informations fournies dans la table ci-dessous",
"webSSOProfileConsumerResponseSkew": "Voir les informations fournies dans la table ci-dessous",
"webSSOProfileConsumerReleaseDOM": "Voir les informations fournies dans la table ci-dessous",
"webSSOProfileResponseSkew": "Voir les informations fournies dans la table ci-dessous",
"retriggerOnScopesRemoval": "Voir les informations fournies dans la table ci-dessous",
"samlAssertionUserNameAttributeName": "Voir les informations fournies dans la table ci-dessous",
"samlAssertionMaxAuthenticationAge": "Voir les informations fournies dans la table ci-dessous",
"authnContextAsPassword": "Voir les informations fournies dans la table ci-dessous"
},
"AccessTokenPersistenceSettings": {
"dbType": "Voir les informations fournies dans la table ci-dessous",
"driverClassName": "Voir les informations fournies dans la table ci-dessous",
"url": "Voir les informations fournies dans la table ci-dessous",
"username": "Voir les informations fournies dans la table ci-dessous",
"password": "Voir les informations fournies dans la table ci-dessous",
"encryptTokenInDatabase": "Voir les informations fournies dans la table ci-dessous",
"keyczarKeyFolderPath": "Obsolète depuis les versions 9.3 et ultérieures. Voir les informations fournies dans la table ci-dessous"
},
"KeyManagerSettings": {
"keyStoreFilePath": "Voir les informations fournies dans la table ci-dessous",
"keyStoreStorePass": "Voir les informations fournies dans la table ci-dessous",
"keyStoreKey": "Voir les informations fournies dans la table ci-dessous",
"keyStoreKeyPass": "Voir les informations fournies dans la table ci-dessous"
},
"AuthorizationServersSettings": {
"<AuthorizationServerId1>": {
"clientId": "Voir les informations fournies dans la table ci-dessous",
"clientSecret": "Voir les informations fournies dans la table ci-dessous",
"authorizeUri": "Voir les informations fournies dans la table ci-dessous",
"tokenUri": "Voir les informations fournies dans la table ci-dessous",
"clientAuthScheme": "Voir les informations fournies dans la table ci-dessous"
},
"<AuthorizationServerId2>": {
"clientId": "Voir les informations fournies dans la table ci-dessous",
"clientSecret": "Voir les informations fournies dans la table ci-dessous",
"authorizeUri": "Voir les informations fournies dans la table ci-dessous",
"tokenUri": "Voir les informations fournies dans la table ci-dessous",
"clientAuthScheme": "Voir les informations fournies dans la table ci-dessous"
}
}
}
}
* 
Assurez-vous de modifier la valeur de chaque paramètre par rapport à vos besoins. Votre implémentation peut varier en fonction de plusieurs facteurs, par exemple l'endroit où ThingWorx est hébergé, les politiques de sécurité de votre organisation ainsi que le serveur d'autorisation central (CAS) de votre fédération. Reportez-vous aux informations des tables suivantes pour vous aider à définir la valeur de chaque paramètre.
La table suivante décrit les paramètres et les valeurs par défaut de la section BasicSettings du fichier sso-settings.json :
Paramètre
Description
Valeur
clientBaseUrl
Spécifie l'URL de l'instance du serveur ThingWorx.
Fournissez le nom de domaine complet ThingWorx du serveur (FQDN).
Si vous avez installé ThingWorx Flow, vous devez spécifier le nom d'hôte Nginx ThingWorx Flow et le numéro de port Nginx ThingWorx Flow dans l'URL.
Si vous avez configuré ThingWorx pour fonctionner dans un environnement haute disponibilité, spécifiez l'hôte et le port de l'équilibreur de charge.
http://<FQDN ThingWorx>:<port-number>/Thingworx
OU
Pour ThingWorx Flow, https://<nom-hôte Nginx ThingWorx Flow>:<numéro-port Nginx ThingWorx Flow>/Thingworx
OU
Dans un environnement haute disponibilité, https://<nom-hôte équilibreur de charge>:<numéro-port équilibreur de charge>/Thingworx
idpMetadataFilePath
Spécifie le chemin d'accès absolu au fichier de métadonnées IdP.
/ThingworxPlatform/ssoSecurityConfig/sso-idp-metadata.xml
metadataEntityId
Spécifie l'ID d'entité de connexion du fournisseur de services.
PingFederate en tant que CAS : utilisez l'ID unique que vous avez choisi lors de la configuration de la connexion du fournisseur de services.
Azure AD en tant que CAS : utilisez l'identificateur Identifier (Entitity ID) que vous avez défini lors de la configuration des paramètres SAML de base.
AD FS en tant que CAS : utilisez l'identificateur Relying party trust identifier que vous avez défini lors de la configuration des paramètres d'approbation de partie de confiance.
metadataEntityBaseUrl
Spécifie le nom de domaine complet du serveur ThingWorx.
* 
Il n'est pas recommandé d'utiliser des noms de domaine qui ne sont pas complets. Si votre organisation choisit d'utiliser un nom de domaine qui n'est pas complet, votre service informatique doit s'assurer que le nom de domaine est accessible par les ordinateurs clients et qu'il est configuré correctement dans les fichiers de configuration de l'authentification unique ThingWorx.
Si vous avez installé ThingWorx Flow, spécifiez l'URL du service Nginx ThingWorx Flow.
* 
Effectuez cette étape si vous utilisez une version de ThingWorx Flow antérieure à la 9.2. Cette étape est automatisée dans ThingWorx Flow 9.2.
Si vous avez configuré ThingWorx pour fonctionner dans un environnement haute disponibilité, spécifiez l'hôte et le port de l'équilibreur de charge.
http://<FQDN ThingWorx>:<port-number>/Thingworx
OU
Pour ThingWorx Flow, https://<nom-hôte Nginx ThingWorx Flow>:<numéro-port Nginx ThingWorx Flow>/Thingworx
OU
Dans un environnement haute disponibilité, https://<nom-hôte équilibreur de charge>:<numéro-port équilibreur de charge>/Thingworx
webSSOProfileConsumerResponseSkew
Spécifie la tolérance de différence de la réponse du service consommateur d'assertions SSO Web SAML 2.0.
Lorsque vous définissez cette valeur, prenez en considération vos propres exigences de sécurité ainsi que la latence dans votre réseau d'entreprise.
Utilisez ce paramètre pour définir le délai autorisé (en secondes) pour que le CAS renvoie à ThingWorx une réponse à la requête de connexion. Si le délai de réponse à la requête de connexion est supérieur à la valeur définie, la tentative de connexion échouera.
La tolérance de différence désigne la déviation dans la validité de réponse que le destinataire autorise en raison de différences présumées entre les horloges système. Il est recommandé de limiter les effets liés à cette différence en s'assurant que les horloges de chaque système sont correctement synchronisées.
300
webSSOProfileConsumerReleaseDOM
Détermine si l'infrastructure de sécurité conserve l'assertion SAML une fois l'authentification effectuée.
Si ce paramètre est défini sur faux, l'assertion SAML est conservée une fois l'authentification effectuée.
vrai
webSSOProfileResponseSkew
Spécifie la tolérance de différence de la réponse du profil SSO Web SAML 2.0.
Lorsque vous définissez cette valeur, prenez en considération vos propres exigences de sécurité ainsi que la latence dans votre réseau d'entreprise.
La tolérance de différence désigne la déviation dans la validité de réponse que le destinataire autorise en raison de différences présumées entre les horloges système. Il est recommandé de limiter les effets liés à cette différence en s'assurant que les horloges de chaque système sont correctement synchronisées.
300
retriggerOnScopesRemoval
Spécifie si la liste des étendues requises a changé et doit être actualisée.
vrai indique qu'une étendue a été ajoutée ou supprimée de la liste des étendues requises.
faux signifie qu'une étendue a été ajoutée à la liste des étendues requises.
vrai
samlAssertionUserNameAttributeName
Spécifie l'attribut SAML pour lequel est définie la valeur qui stocke les noms des utilisateurs ThingWorx lorsqu'ils se connectent. Assurez-vous que la valeur de cet attribut dans le fournisseur d'identité correspond aux valeurs que vous prévoyez d'utiliser en tant que noms d'utilisateur ThingWorx.
* 
Pour le compte d'administrateur ThingWorx, la valeur de nom d'utilisateur doit être définie sur Administrateur. Vérifiez que vous avez configuré votre fournisseur d'identité (IdP) pour qu'il renvoie la valeur Administrateur pour le compte d'administrateur. Pour plus d'informations, consultez la rubrique Création de l'alias de l'administrateur ThingWorx dans le fournisseur d'identité.
PingFederate ou Azure AD en tant que CAS :
uid
AD FS en tant que CAS :
http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name
samlAssertionMaxAuthenticationAge
Spécifie la durée maximale (en secondes) de l'assertion SAML 2.0 avant son expiration. Ce paramètre spécifie également la durée de session maximale d'une assertion d'authentification.
Définissez la valeur afin qu'elle corresponde à la valeur d'expiration de session spécifiée dans le fournisseur d'identité. Cette valeur varie en fonction de l'IdP utilisé.
PingFederate en tant que CAS avec IdP LDAP (Windchill) : 7200 (valeur par défaut)
AD FS en tant qu'IdP (avec AD FS ou PingFederate en tant que CAS) : 28800
Azure AD en tant qu'IdP (avec Azure AD ou PingFederate en tant que CAS) : 86400
authnContextAsPassword
Facultatif. Dans quelques rares cas, l'IdP vous demande d'introduire l'assertion suivante dans la requête SAML.
<saml2p:RequestedAuthnContext Comparison="exact">
<saml2:AuthnContextClassRef xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion">
urn:oasis:names:tc:SAML:2.0:ac:classes:Password
</saml2:AuthnContextClassRef>
</saml2p:RequestedAuthnContext>
Dans ce cas, vous devez définir cette propriété.
faux
* 
Si vous souhaitez activer l'authentificateur de clé d'application lorsque l'authentification SSO est activée, vous devez ajouter la section de configuration ApplicationKeySettings aux paramètres sso-settings.json dans BasicSettings. Cela n'est nécessaire que si vous souhaitez utiliser des clés d'application pour l'authentification au moyen de requêtes API REST. Que ce paramètre soit ou non activé, les clés d'application demeurent utilisables par les périphériques Edge via des WebSockets.
{
"BasicSettings": {
...
},
"ApplicationKeySettings": {
"enabled": true
},
...
}
Les tables suivantes décrivent les paramètres et les valeurs par défaut de la section AccessTokenPersistenceSettings du fichier sso-settings.json :
Paramètre
Description
Valeur
dbType
Spécifie le type de la base de données configurée et utilisée pour l'installation d'ThingWorx.
Pour utiliser la même base de données que celle définie dans le fichier platform-settings.json, spécifiez la même information de type de base de données et les mêmes informations d'identification que celles figurant dans platform-settings.json.
Pour utiliser une base de données dédiée pour le jeton d'autorisation, spécifiez la valeur "default". Avec cette configuration sur "default", une nouvelle base de données H2 dédiée sera créée.
par défaut
* 
La valeur "default" est l'option par défaut pour les paramètres d'authentification unique.
H2
postgres
mssql
hana
driverClassName
Spécifie le nom de classe de pilote utilisé dans le fichier platform-settings.json.
Lorsque dbType est défini sur default, définissez ce paramètre sur org.h2.Driver.
Lorsque dbType est défini sur h2, définissez ce paramètre sur org.h2.Driver.
Lorsque dbType est défini sur postgres, définissez ce paramètre sur org.postgresql.Driver.
Lorsque dbType est défini sur mssql, définissez ce paramètre sur com.microsoft.sqlserver.jdbc.SQLServerDriver.
Lorsque dbType est défini sur hana, définissez ce paramètre sur com.sap.db.jdbc.Driver.
url
Spécifie l'URL vers l'emplacement de la base de données pour votre installation d'ThingWorx.
Lorsque dbType est défini sur default, définissez ce paramètre sur jdbc:h2:\\<lecteur>:\\ThingworxPlatform\\ssoSecurityConfig\\sso-oauth2-client-db.
Lorsque dbType est défini sur h2, ce paramètre n'est pas nécessaire.
Lorsque dbType est défini sur postgres, définissez ce paramètre sur jdbc:postgresql://<nom d'hôte>:<port>/thingworx.
Lorsque dbType est défini sur mssql, définissez ce paramètre sur jdbc:sqlserver://<nom d'hôte>:<port>;databaseName=thingworx;applicationName=Thingworx.
Lorsque dbType est défini sur hana, définissez ce paramètre sur jdbc:sap://<adresse_ip>:39041/?databaseName=thingworx&currentschema=TWADMIN.
username
Spécifie le nom d'utilisateur de la base de données que votre système utilise pour stocker les jetons d'accès. Il doit correspondre au nom d'utilisateur spécifié dans le fichier platform-settings.json.
* 
Lorsque l'authentification unique est activée dans ThingWorx, la base de données H2 doit être protégée par un mot de passe. Pour en savoir plus, consultez la rubrique Protection par mot de passe de la base de données H2 lorsque l'authentification unique est activée sur ThingWorx.
password
Spécifie le mot de passe de la base de données que votre système utilise pour stocker les jetons d'accès. Il doit correspondre au mot de passe spécifié dans le fichier platform-settings.json.
* 
Lorsque l'authentification unique est activée dans ThingWorx, la base de données H2 doit être protégée par un mot de passe. Pour en savoir plus, consultez la rubrique Protection par mot de passe de la base de données H2 lorsque l'authentification unique est activée sur ThingWorx.
encryptTokenInDatabase
Définissez ce paramètre sur vrai pour chiffrer le jeton d'accès avant de le rendre persistant dans la base de données.
Pour ThingWorx 9.3 et versions ultérieures :
Lorsque cette valeur est définie sur true, un fichier private-keyset.cfg est automatiquement créé au démarrage de ThingWorx et stocké dans le dossier ssoSecurityConfig. Ce jeu de clés n'est créé qu'une seule fois.
Pour ThingWorx 9.2.x et versions antérieures :
Définissez keyczarKeyFolderPath sur un emplacement keyCzarKey valide.
vrai
keyczarKeyFolderPath
Pour ThingWorx 9.3 et versions ultérieures :
L'outil Keyczar a été abandonné et a été remplacé par Tink. Cette propriété n'est plus requise pour le chiffrement des jetons d'accès avant qu'ils ne soient rendus persistants dans la base de données.
Pour ThingWorx 9.2.x et versions antérieures :
Si encryptTokenInDatabase est défini sur vrai, ce chemin d'accès doit pointer vers un emplacement keyCzarKey valide. Modifiez le chemin d'accès de façon à utiliser le répertoire dans lequel votre dossier ThingworxPlatform\ssoSecurityConfig\symmetric se trouve.
* 
Il est fortement recommandé d'utiliser un emplacement de stockage pour la clé du KeyStore différent de l'emplacement de stockage du fichier sso-settings.json. Vous pouvez ainsi appliquer à ces fichiers des contrôles d'accès au système de fichiers plus granulaires. Les paramètres généraux d'ThingWorx doivent être stockés dans un emplacement différent du fichier sso-settings.json et du dossier de clé du KeyStore.
Pour ThingWorx 9.3 et versions ultérieures :
Pour ThingWorx 9.2.x et versions antérieures :
Sous Windows : <lecteur>:\\ThingworxPlatform\\ssoSecurityConfig\\symmetric
<lecteur> spécifie le lecteur d'installation d'ThingWorx.
Pour Linux : <chemin complet>/ThingworxPlatform/ssoSecurityConfig/symmetric
Selon la valeur de dbType, les jetons d'accès OAuth 2.0 (autorisations d'accès) sont stockés à des emplacements différents. La table suivante fournit des informations sur l'emplacement de stockage des autorisations d'accès dans la base de données :
dbType
Emplacement de stockage des autorisations d'accès dans la base de données
default
Base de données H2 de sous-ensemble créée comme spécifié par le chemin d'accès du paramètre url. Par défaut, la base de données est placée dans un répertoire relatif au répertoire Tomcat.
Si vous définissez dbType sur default, il est recommandé de spécifier le chemin complet de l'URL JDBC et non le chemin relatif.
Par exemple : jdbc:h2:./ThingworxPlatform/ssoSecurityConfig/sso-oauth2-client-db
H2
Fichiers WAR H2 ThingWorx dans les fichiers de base de données H2 ThingworxStorage/database
postgres
Dans la table oauth_client_token de la base de données PostgreSQL ThingWorx
mssql
Dans la table oauth_client_token de la base de données MS SQL ThingWorx
hana
Dans la table oauth_client_token de la base de données SAP HANA ThingWorx
La table suivante décrit les paramètres et les valeurs par défaut de la section KeyManagerSettings du fichier sso-settings.json :
Paramètre
Description
Valeur
keyStoreFilePath
Spécifie le chemin d'accès absolu au KeyStore. En fonction de votre environnement, modifiez le chemin d'accès de façon à utiliser le répertoire d'enregistrement de votre fichier KeyStore.
* 
Il est fortement recommandé d'utiliser un emplacement de stockage pour la clé du KeyStore différent de l'emplacement de stockage du fichier sso-settings.json. Vous pouvez ainsi appliquer à ces fichiers des contrôles d'accès au système de fichiers plus granulaires. Les paramètres généraux d'ThingWorx doivent être stockés dans un emplacement différent du fichier sso-settings.json et de la clé du KeyStore.
Sous Windows : <lecteur>:\\ThingworxPlatform\\ssoSecurityConfig\\sso-keystore.jks
<lecteur> spécifie le lecteur d'installation d'ThingWorx.
Pour Linux : <chemin complet>/ThingworxPlatform/ssoSecurityConfig/sso-keystore.jks
keyStoreStorePass
Spécifie le mot de passe du KeyStore.
keyStoreKey
Spécifie la clé par défaut.
keyStoreKeyPass
Spécifie le mot de passe utilisé pour accéder aux clés privées.
La table suivante décrit les paramètres et les valeurs par défaut de la section AuthorizationServersSettings du fichier sso-settings.json :
* 
Les paramètres AuthorizationServersSettings peuvent contenir les informations de plusieurs serveurs d'autorisation. Chaque serveur est identifié par un identificateur unique dans le fichier sso-settings.json.
Paramètre
Description
Valeur
<IDServeurAutorisation1>.clientId
Spécifie l'identificateur client à utiliser lors de l'obtention de jetons d'accès auprès du serveur d'autorisation.
* 
Choisissez une valeur à indiquer pour la variable AuthorizationServerId1. Cette valeur de la variable AuthorizationServerId1 sert à configurer les paramètres de connexion d'un connecteur d'intégration ou d'une entité de média. Si l'administrateur ou le développeur qui configure les paramètres du connecteur n'a pas accès au répertoire ssoSecurityConfig, vous devez lui fournir ces informations.
<IDServeurAutorisation1>.clientSecret
Spécifie les informations d'identification client utilisées pour l'authentification auprès du serveur d'autorisation.
Définissez l'URL complète du serveur DNS sur le réseau.
<IDServeurAutorisation1>.authorizeUri
Spécifie l'URI vers lequel l'utilisateur doit être redirigé pour autoriser un jeton d'accès.
PingFederate en tant que CAS :
https://<nom-hôte-PingFederate>:<Numéro-Port-PingFederate>/as/authorization.oauth2
* 
Utilisez le port d'exécution PingFederate fourni avec l'installation de PingFederate.
Azure AD en tant que CAS : consultez Update the ThingWorx Configuration Files (en anglais) dans la documentation Azure AD sur les autorisations.
AD FS en tant que CAS : consultez Update the ThingWorx Configuration Files dans la documentation AD FS sur les autorisations.
<IDServeurAutorisation1>.tokenUri
Spécifie l'URI à utiliser pour obtenir un jeton d'accès OAuth2.
Définissez l'URL complète du serveur DNS sur le réseau.
https://<nom-hôte-PingFederate>:<Numéro-Port-PingFederate>/as/token.oauth2
* 
Utilisez le port d'exécution PingFederate fourni avec l'installation de PingFederate.
<IDServeurAutorisation1>.clientAuthScheme
Spécifie le schéma à utiliser pour authentifier le client. Les valeurs autorisées sont les suivantes :
form
header
query
Aucune
form
Est-ce que cela a été utile ?