Configurare il file sso-settings.json
Creare il file sso-settings.json nella directory ssoSecurityConfig.
Se l'ambiente richiede un percorso diverso, impostare il valore della variabile di ambiente THINGWORX_SSO_SETTINGS per salvare il file sso-settings.json in una posizione diversa.
Di seguito viene riportata una struttura di esempio del file sso-settings.json:
{
"BasicSettings": {
"clientBaseUrl": "Vedere le informazioni nella tabella seguente",
"idpMetadataFilePath": "Vedere le informazioni nella tabella seguente",
"metadataEntityId": "Vedere le informazioni nella tabella seguente",
"metadataEntityBaseUrl": "Vedere le informazioni nella tabella seguente",
"webSSOProfileConsumerResponseSkew": "Vedere le informazioni nella tabella seguente",
"webSSOProfileConsumerReleaseDOM": "Vedere le informazioni nella tabella seguente",
"webSSOProfileResponseSkew": "Vedere le informazioni nella tabella seguente",
"retriggerOnScopesRemoval": "Vedere le informazioni nella tabella seguente",
"samlAssertionUserNameAttributeName": "Vedere le informazioni nella tabella seguente",
"samlAssertionMaxAuthenticationAge": "Vedere le informazioni nella tabella seguente",
"ptcOperatorsGroupName": "Vedere le informazioni nella tabella seguente",
"samlGroupClaimName": "Vedere le informazioni nella tabella seguente",
"administratorAlias": "Vedere le informazioni nella tabella seguente",
“administratorInternalName": "Administrator",
"authnContextAsPassword": "Vedere le informazioni nella tabella seguente",
"authenticationType": "Vedere le informazioni nella tabella seguente
},
"AccessTokenPersistenceSettings": {
"dbType": "Vedere le informazioni nella tabella seguente",
"driverClassName": "Vedere le informazioni nella tabella seguente",
"url": "Vedere le informazioni nella tabella seguente",
"username": "Vedere le informazioni nella tabella seguente",
"password": "Vedere le informazioni nella tabella seguente",
"encryptTokenInDatabase": "Vedere le informazioni nella tabella seguente",
},
"KeyManagerSettings": {
"keyStoreFilePath": "Vedere le informazioni nella tabella seguente",
"keyStoreStorePass": "Vedere le informazioni nella tabella seguente",
"keyStoreKey": "Vedere le informazioni nella tabella seguente",
"keyStoreKeyPass": "Vedere le informazioni nella tabella seguente"
},
"AuthorizationServersSettings": {
"<AuthorizationServerId1>": {
"clientId": "Vedere le informazioni nella tabella seguente",
"clientSecret": "Vedere le informazioni nella tabella seguente",
"authorizeUri": "Vedere le informazioni nella tabella seguente",
"tokenUri": "Vedere le informazioni nella tabella seguente",
"clientAuthScheme": "Vedere le informazioni nella tabella seguente"
},
"<AuthorizationServerId2>": {
"clientId": "Vedere le informazioni nella tabella seguente",
"clientSecret": "Vedere le informazioni nella tabella seguente",
"authorizeUri": "Vedere le informazioni nella tabella seguente",
"tokenUri": "Vedere le informazioni nella tabella seguente",
"clientAuthScheme": "Vedere le informazioni nella tabella seguente"
"mandatoryScopes": "Vedere le informazioni nella tabella seguente"
},
"OIDCSettings": {
"accessTokenClaimsValidation":"Vedere le informazioni nella tabella seguente",
"additionalScopes": "Vedere le informazioni nella tabella seguente",
"assertionUserNameAttributeName": "Vedere le informazioni nella tabella seguente",
"clientId": "Vedere le informazioni nella tabella seguente",
"clientSecret": "Vedere le informazioni nella tabella seguente",
"openIdConfigurationUri": "Vedere le informazioni nella tabella seguente",
"proxyAuthentication": "Vedere le informazioni nella tabella seguente",
"useAccessTokenClaims": "Vedere le informazioni nella tabella seguente"
},
"AzureSettings": {
"apiEndPoint": "Vedere le informazioni nella tabella seguente"
}
}
* 
Assicurarsi di modificare il valore di ogni parametro in base al requisito specifico. L'implementazione può variare e dipende da diversi fattori, ad esempio dalla posizione in cui è ospitato ThingWorx, dai criteri di protezione dell'organizzazione e dal CAS per l'ambiente federato in uso. Utilizzare le informazioni nelle tabelle riportate di seguito come guida per impostare i valori dei diversi parametri.
La tabella seguente descrive i diversi parametri e valori di default della sezione BasicSettings del file sso-settings.json.
Parametro
Descrizione
Valore
clientBaseUrl
Specifica l'URL dell'istanza del server ThingWorx.
Impostare questo valore sul nome di dominio completo (FQDN) del server ThingWorx.
Se è stato configurato ThingWorx per operare in un ambiente a disponibilità elevata, specificare l'host e la porta del bilanciamento del carico.
http://<FQDN- ThingWorx>:<port-number>/Thingworx
OPPURE
In un ambiente a disponibilità elevata https://<nome-host bilanciamento del carico>:<numero-porta bilanciamento del carico>/Thingworx
idpMetadataFilePath
Obbligatorio solo per l'autenticazione SAML. Specifica la posizione assoluta del percorso del file di metadati IdP.
/ThingworxPlatform/ssoSecurityConfig/sso-idp-metadata.xml
metadataEntityId
Obbligatorio solo per l'autenticazione SAML. Specifica l'ID dell'entità della connessione del provider di servizi.
PingFederate come CAS: utilizzare l'ID univoco scelto durante la configurazione della connessione del provider di servizi.
Microsoft Entra ID come CAS: utilizzare il valore Identifier (Entitity ID) definito durante la configurazione delle impostazioni SAML di base.
AD FS come CAS: utilizzare il valore Relying party trust identifier definito durante la configurazione delle impostazioni di attendibilità del componente
metadataEntityBaseUrl
Obbligatorio solo per l'autenticazione SAML. Specifica il nome di dominio completo del server ThingWorx.
* 
Non è consigliabile utilizzare nomi di dominio che non siano completi. Se l'organizzazione sceglie di utilizzare un nome di dominio non completo, il reparto IT deve garantire che il nome di dominio sia accessibile dai computer client e configurato correttamente nei file di configurazione dell'SSO ThingWorx.
Se è stato configurato ThingWorx per operare in un ambiente a disponibilità elevata, specificare l'host e la porta del bilanciamento del carico.
http://<FQDN- ThingWorx>:<port-number>/Thingworx
OPPURE
In un ambiente a disponibilità elevata https://<nome-host bilanciamento del carico>:<numero-porta bilanciamento del carico>/Thingworx
webSSOProfileConsumerResponseSkew
Specifica la tolleranza di deviazione della risposta degli utenti alla condizione SSO Web SAML 2.0.
Quando si imposta questo valore, considerare i propri requisiti di protezione, nonché la latenza nella rete aziendale.
Utilizzare questa impostazione per specificare la quantità di tempo (espressa in secondi) concessa per la restituzione di una risposta alla richiesta di accesso dal CAS ad ThingWorx. Se la risposta alla richiesta di accesso impiega più tempo di questo valore, il tentativo di accesso non riesce.
La tolleranza di deviazione è la deviazione in termini di validità di risposta che il destinatario consente tenendo conto delle differenze presunte tra gli orologi di sistema. La best practice prevede di ridurre al minimo gli effetti della deviazione assicurandosi che gli orologi di ciascun sistema coinvolto sia sincronizzato in modo preciso.
300
webSSOProfileConsumerReleaseDOM
Determina se il framework di protezione mantiene la condizione SAML dopo il completamento dell'autenticazione.
Se il valore è impostato su false, la condizione SAML viene mantenuta dopo il completamento dell'autenticazione.
true
webSSOProfileResponseSkew
Specifica la tolleranza di deviazione della risposta del profilo SSO Web SAML 2.0.
Quando si imposta questo valore, considerare i propri requisiti di protezione, nonché la latenza nella rete aziendale.
La tolleranza di deviazione è la deviazione in termini di validità di risposta che il destinatario consente tenendo conto delle differenze presunte tra gli orologi di sistema. La best practice prevede di ridurre al minimo gli effetti della deviazione assicurandosi che gli orologi di ciascun sistema coinvolto sia sincronizzato in modo preciso.
300
retriggerOnScopesRemoval
Specifica se l'elenco degli ambiti richiesti è cambiato e deve essere aggiornato.
Se il valore è impostato su true, un ambito è stato aggiunto o rimosso dall'elenco degli ambiti richiesti.
Se il valore è impostato su false, un ambito è stato aggiunto all'elenco degli ambiti richiesti.
true
samlAssertionUserNameAttributeName
Obbligatorio solo per l'autenticazione SAML. Specifica quale attributo SAML contiene il valore che memorizza i nomi utente degli utenti ThingWorx quando eseguono l'accesso. Assicurarsi che il valore di questo attributo nel provider di identificativi sia allineato ai valori di nome utente che si utilizzerebbero per i nomi utente ThingWorx.
* 
Per l'account amministratore ThingWorx, il valore del nome utente deve essere impostato su Administrator. Assicurarsi di configurare l'IdP in modo che restituisca il valore Administrator per l'account amministratore. Per ulteriori informazioni, vedere Creare l'alias dell'amministratore di ThingWorx nel provider di identificativi.
PingFederate o Microsoft Entra ID come CAS:
uid
AD FS come CAS:
http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name
samlAssertionMaxAuthenticationAge
Obbligatorio solo per l'autenticazione SAML. Specifica la durata massima (in secondi) della condizione SAML 2.0 prima della scadenza. Specifica inoltre la durata di sessione massima per una condizione di autenticazione.
Impostare il valore in modo che corrisponda al valore di timeout di sessione specificato nel provider di identificativi. Questo valore differisce in base al tipo di IdP in uso.
PingFederate come CAS con IdP LDAP (Windchill): 7200 (valore di default)
AD FS come IdP (con AD FS o PingFederate come CAS): 28800
Microsoft Entra ID come IdP (con Microsoft Entra ID o PingFederate come CAS): 86400
ptcOperatorsGroupName
Facoltativo.
Impostare questo parametro per configurare automaticamente un gruppo (in base alla definizione in IDP) come parte del gruppo di amministratori ThingWorx
administratorAlias
Obbligatorio per l'autenticazione OIDC.
Nome utente dell'amministratore configurato in CAS[IDP].
administratorInternalName
Obbligatorio se administratorAlias è definito.
Nome utente dell'amministratore configurato in ThingWorx. Ad esempio, Amministratore.
samlGroupClaimName
Facoltativo, ma obbligatorio solo per l'autenticazione SAML.
Questo parametro è rilevante solo quando ptcOperatorsGroupName è definito.
Immettere il valore IDP SAML Group Claim Name configurato in CAS per completare l'automazione per tale gruppo nell'autenticatore SSO ThingWorx. Per ulteriori informazioni, vedere ThingworxSSOAuthenticator.
Esempi:
Per il CAS PingFederate: gruppo
authnContextAsPassword
Facoltativo. In alcuni casi rari, l'IdP richiede di inserire la condizione successiva nella richiesta 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>
In questi casi è necessario definire questa proprietà.
false
authenticationType
Facoltativo. Il tipo di autenticazione: oidc/saml. Valore di default = saml
Non obbligatorio per PingFederate e ADFS (saml è l'impostazione di default)
Per Microsoft Entra ID-saml/oidc
Per Azure AD B2C e Atlas IAM - oidc
* 
Se si desidera attivare l'autenticatore delle chiavi di accesso quando l'SSO è attivato, è necessario aggiungere la seguente sezione di configurazione ApplicationKeySettings alle impostazioni di sso-settings.json in BasicSettings. Questa operazione è necessaria solo se si desidera utilizzare le chiavi di accesso per l'autenticazione tramite richieste API REST. Le chiavi di accesso possono comunque essere utilizzate dai dispositivi edge tramite WebSocket, indipendentemente dal fatto che questa impostazione sia attivata o disattivata.
{
"BasicSettings": {
...
},
"ApplicationKeySettings": {
"enabled": true
},
...
}
Le tabelle seguenti descrivono i diversi parametri e valori di default della sezione AccessTokenPersistenceSettings del file sso-settings.json.
Parametro
Descrizione
Valore
dbType
Specifica il tipo di database configurato e utilizzato per l'installazione di ThingWorx.
Per utilizzare lo stesso database impostato nel file platform-settings.json, specificare lo stesso tipo di database e le credenziali impostate in platform-settings.json.
postgres
mssql
driverClassName
Specifica il nome di classe driver utilizzato nel file platform-settings.json.
Per dbType impostato come postgres, impostare su org.postgresql.Driver.
Per dbType impostato come mssql, impostare su com.microsoft.sqlserver.jdbc.SQLServerDriver.
url
Specifica l'URL della posizione del database dell'installazione di ThingWorx.
Per dbType impostato come postgres, impostare su jdbc:postgresql://<nomehost>:<porta>/thingworx.
Per dbType impostato come mssql, impostare su jdbc:sqlserver://<nomehost>:<porta>;databaseName=thingworx;applicationName=Thingworx.
username
Specifica il nome utente per il database utilizzato dal sistema per memorizzare i token di accesso. Questo valore deve corrispondere al nome utente specificato nel file platform-settings.json.
password
Specifica la password per il database utilizzato dal sistema per memorizzare i token di accesso. Questo valore deve corrispondere alla password specificata nel file platform-settings.json.
encryptTokenInDatabase
Impostare su true per crittografare il token di accesso prima che venga reso persistente nel database.
true
A seconda del valore di dbType, i token di accesso OAuth 2.0 (approvazioni delle concessioni) sono memorizzati in posizioni diverse. La tabella seguente fornisce informazioni sulla posizione nel database in cui sono memorizzate le approvazioni delle concessioni:
dbType
Posizione nel database in cui sono memorizzate le approvazioni delle concessioni
postgres
Nella tabella oauth_client_token nel database PostgreSQL di ThingWorx.
mssql
Nella tabella oauth_client_token nel database MS SQL di ThingWorx.
La tabella seguente descrive i diversi parametri e valori di default della sezione KeyManagerSettings del file sso-settings.json.
Parametro
Descrizione
Valore
keyStoreFilePath
Specifica la posizione assoluta del percorso del file keystore. In base all'ambiente in uso modificare il percorso per utilizzare la directory in cui viene salvato il file keystore.
* 
Si consiglia vivamente di utilizzare una posizione di archiviazione per la chiave del keystore diversa da quella in cui è memorizzato il file sso-settings.json. Ciò consente di applicare a questi file controlli di accesso del file system più granulari. Le impostazioni generali per ThingWorx devono essere memorizzate in una posizione diversa dalla chiave del keystore e dal file sso-settings.json.
Per Windows: <unità>:\\ThingworxPlatform\\ssoSecurityConfig\\sso-keystore.jks
dove <unità> specifica l'unità in cui è stato installato ThingWorx.
Per Linux: <percorso completo>/ThingworxPlatform/ssoSecurityConfig/sso-keystore.jks
keyStoreStorePass
Specifica la password del file keystore.
keyStoreKey
Specifica la chiave di default.
keyStoreKeyPass
Specifica la password utilizzata per accedere alle chiavi private.
La tabella seguente descrive i diversi parametri e valori di default della sezione AuthorizationServersSettings del file sso-settings.json.
* 
Le impostazioni AuthorizationServersSettings potrebbero includere informazioni relative a più di un server di autorizzazione. Ogni server è identificato da un identificatore univoco nel file sso-settings.json.
Parametro
Descrizione
Valore
<AuthorizationServerId1>.clientId
Specifica l'identificatore client da utilizzare quando si ottengono i token di accesso dal server di autorizzazione.
* 
Scegliere un valore per la variabile AuthorizationServerId1. Questo valore della variabile AuthorizationServerId1 viene utilizzato per configurare le impostazioni di connessione per un connettore di integrazione o un'entità multimediale. Se l'amministratore o lo sviluppatore che configura le impostazioni del connettore non ha accesso alla directory ssoSecurityConfig, è necessario fornirgli queste informazioni.
<AuthorizationServerId1>.clientSecret
Specifica le credenziali del client utilizzate per l'autenticazione con il server di autorizzazione.
Impostare questo valore sull'URL del server DNS completo nella rete.
<AuthorizationServerId1>.authorizeUri
Specifica l'URI a cui l'utente deve essere reindirizzato per autorizzare un token di accesso.
PingFederate come CAS:
https://<nome-host-PingFederate>:<numero-porta-PingFederate>/as/authorization.oauth2
* 
Utilizzare la porta di esecuzione PingFederate fornita con l'installazione di PingFederate.
Microsoft Entra ID come CAS: vedere l'argomento relativo all' aggiornamento dei file di configurazione ThingWorx nella documentazione di autorizzazione di Microsoft Entra ID.
AD FS come CAS: vedere l'argomento relativo all'aggiornamento dei file di configurazione ThingWorx nella documentazione di autorizzazione di AD FS.
<AuthorizationServerId1>.tokenUri
Specifica l'URI da utilizzare per ottenere un token di accesso OAuth2.
Impostare questo valore sull'URL del server DNS completo nella rete.
https://<nome-host-PingFederate>:<numero-porta-PingFederate>/as/token.oauth2
* 
Utilizzare la porta di esecuzione PingFederate fornita con l'installazione di PingFederate.
<AuthorizationServerId1>.clientAuthScheme
Specifica lo schema da utilizzare per autenticare il client. Di seguito sono riportati i valori consentiti.
form
header
query
none
form
<AuthorizationServerId1>.mandatoryScopes
Facoltativo per CAS diverso da Microsoft Entra ID e ADFS. Questo ambito viene aggiunto automaticamente ai token di accesso richiesti quando viene definito questo parametro.
* 
Se esiste più di un ambito, utilizzare lo spazio come delimitatore.
Obbligatorio per Microsoft Entra ID come CAS. Il valore richiesto è "offline_access".
Obbligatorio per ADFS: può corrispondere a qualsiasi valore non definito nell'elenco degli ambiti sul server ADFS.
La tabella seguente descrive i diversi parametri e valori di default della sezione OIDCSettings del file sso-settings.json Questa sezione è obbligatoria solo se il tipo di autenticazione è OIDC.
Parametro
Descrizione
Valore
openIdConfigurationUri
Obbligatorio
Si tratta dell'URI per i metadati del server OpenID.
Viene generalmente pubblicato su un URL noto.
clientId
Specifica l'identificatore client da utilizzare quando si ottengono i token di accesso dal server di autorizzazione.
clientSecret
Specifica le credenziali del client utilizzate per l'autenticazione con il server di autorizzazione.
additionalScopes
Facoltativo
Stringa separata da virgole con ambiti aggiuntivi per l'autorizzazione oidc
assertionUserNameAttributeName
Specifica quale richiesta openId contiene il valore che memorizza i nomi utente degli utenti ThingWorx quando eseguono l'accesso. Assicurarsi che il valore di questo attributo nel provider di identificativi sia allineato ai valori di nome utente che si utilizzerebbero per i nomi utente ThingWorx.
Per Azure AD B2C - Assicurarsi che il valore di questo attributo sia univoco tra tutti i provider di identificativi.
accessTokenClaimsValidation
Facoltativo
Specifica l'esistenza delle attestazioni per i token di accesso e la convalida del valore delle attestazioni.
L'input è una semplice stringa JSON in cui ogni proprietà è un nome di attestazione obbligatorio e il valore è il valore richiesto. Se non viene fornito alcun valore (stringa vuota), viene convalidata solo l'esistenza del nome di attestazione.
useAccessTokenClaims
Facoltativo
Specifica se recuperare le attestazioni dei token di accesso per la mappatura delle estensioni utente.
Impostare questa proprietà su true solo se:
Il token di accesso contiene attestazioni necessarie per l'estensione utente che non sono presenti nel token openid.
Per Azure AD B2C - Se si desidera recuperare le informazioni sui gruppi di utenti utilizzando AzureSettings.apiEndPoint.
True/False
authorizeUriAdditionalParameters
Facoltativo
Parametri aggiuntivi per l'autenticazione OIDC.
La tabella seguente descrive i diversi parametri e valori di default della sezione AzureSettings del file sso-settings.json Questa sezione è obbligatoria solo per Azure Entra ID con configurazione OIDC.
Parametro
Descrizione
Valore
apiEndPoint
Facoltativo
Endpoint di Azure Graph
Obbligatorio solo per il recupero delle informazioni sui gruppi (se il token openid/di accesso non contiene attestazioni di gruppo)
* 
Quando si utilizza questa opzione, OIDCSettings.useAccessTokenClaims deve essere impostato su true.
È stato utile?