Configurare il file sso-settings.json
* 
Completare i passi correlati ad ThingWorx Flow se si utilizzano versioni precedenti di ThingWorx Flow 9.2. In ThingWorx Flow 9.2 i passi sono automatizzati. Se è installato ThingWorx Flow, è necessario arrestare tutti i servizi ThingWorx Foundation e ThingWorx Flow, compresi RabbitMQ e Nginx, prima di configurare il file sso-settings.json. Dopo avere configurato questo file, è necessario riavviare prima RabbitMQ e quindi tutti i servizi di ThingWorx Foundation e ThingWorx Flow, compreso Nginx.
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",
"authnContextAsPassword": "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",
"keyczarKeyFolderPath": "Obsoleto dalla versione 9.3 e successive. 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"
}
}
}
}
* 
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 è installato ThingWorx Flow, è necessario specificare il nome host Nginx di ThingWorx Flow e il numero della porta Nginx di ThingWorx Flow nell'URL.
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
Per ThingWorx Flow, https://<nome-host Nginx ThingWorx Flow>:<numero-porta Nginx ThingWorx Flow>/Thingworx
OPPURE
In un ambiente a disponibilità elevata https://<nome-host bilanciamento del carico>:<numero-porta bilanciamento del carico>/Thingworx
idpMetadataFilePath
Specifica la posizione assoluta del percorso del file di metadati IdP.
/ThingworxPlatform/ssoSecurityConfig/sso-idp-metadata.xml
metadataEntityId
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.
AD Azure AD 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
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 è installato ThingWorx Flow, specificare l'URL Nginx di ThingWorx Flow.
* 
Completare questo passo se si utilizzano versioni precedenti di ThingWorx Flow 9.2. In ThingWorx Flow 9.2 questo passo è automatizzato.
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
Per ThingWorx Flow, https://<nome-host Nginx ThingWorx Flow>:<numero-porta Nginx ThingWorx Flow>/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
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 Amministratore. Assicurarsi di configurare l'IdP in modo che restituisca il valore Amministratore per l'account amministratore. Per ulteriori informazioni, vedere Creare l'alias dell'amministratore di ThingWorx nel provider di identificativi.
PingFederate o Azure AD come CAS:
uid
AD FS come CAS:
http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name
samlAssertionMaxAuthenticationAge
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
Azure AD come IdP (con Azure AD o PingFederate come CAS): 86400
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
* 
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.
Per utilizzare un database dedicato per il token di autorizzazione, specificare il valore "default". Una volta configurato come "default", viene creato un nuovo database H2 dedicato.
default
* 
Questo tipo di database di "default" è la selezione di default per le impostazioni SSO.
H2
postgres
mssql
hana
driverClassName
Specifica il nome di classe driver utilizzato nel file platform-settings.json.
Per dbType impostato come default, impostare su org.h2.Driver.
Per dbType impostato come h2, impostare su org.h2.Driver.
Per dbType impostato come postgres, impostare su org.postgresql.Driver.
Per dbType impostato come mssql, impostare su com.microsoft.sqlserver.jdbc.SQLServerDriver.
Per dbType impostato come hana, impostare su com.sap.db.jdbc.Driver
url
Specifica l'URL della posizione del database dell'installazione di ThingWorx.
Per dbType impostato come default, impostare su jdbc:h2:\\<unità>:\\ThingworxPlatform\\ssoSecurityConfig\\sso-oauth2-client-db.
Per dbType impostato come h2, questo parametro non è necessario.
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.
Per dbType impostato come hana, impostare su jdbc:sap://<indirizzo_ip>:39041/?databaseName=thingworx&currentschema=TWADMIN.
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.
* 
Quando l'SSO è attivato in ThingWorx, il database H2 deve essere protetto da password. Per ulteriori informazioni, vedere Database H2 protetto da password quando l'SSO è attivato in ThingWorx.
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.
* 
Quando l'SSO è attivato in ThingWorx, il database H2 deve essere protetto da password. Per ulteriori informazioni, vedere Database H2 protetto da password quando l'SSO è attivato in ThingWorx.
encryptTokenInDatabase
Impostare su true per crittografare il token di accesso prima che venga reso persistente nel database.
Per ThingWorx 9.3 e versioni successive:
Se questo valore è impostato su true, viene creato automaticamente un file private-keyset.cfg quando ThingWorx viene avviato e memorizzato nella cartella ssoSecurityConfig. Il file keyset viene creato una sola volta.
Per ThingWorx 9.2.x e versioni precedenti:
Impostare keyczarKeyFolderPath su una posizione keyCzarKey valida.
true
keyczarKeyFolderPath
Per ThingWorx 9.3 e versioni successive:
Lo strumento Keyczar è obsoleto ed è stato sostituito da Tink. Questa proprietà non è più necessaria per crittografare i token di accesso prima che vengano resi persistenti nel database.
Per ThingWorx 9.2.x e versioni precedenti:
Se il valore del parametro encryptTokenInDatabase è impostato su true, questo percorso deve indirizzare a una posizione keyCzarKey valida. Modificare il percorso per utilizzare la directory in cui si trova la cartella ThingworxPlatform\ssoSecurityConfig\symmetric.
* 
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 cartella della chiave del keystore e dal file sso-settings.json.
Per ThingWorx 9.3 e versioni successive:
-
Per ThingWorx 9.2.x e versioni precedenti:
In ambiente Windows: <unità>:\\ThingworxPlatform\\ssoSecurityConfig\\symmetric
dove <unità> specifica l'unità in cui è stato installato ThingWorx.
Per Linux: <percorso completo>/ThingworxPlatform/ssoSecurityConfig/symmetric
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
default
Un database H2 di sottoinsieme viene creato come specificato dal percorso del parametro url. Per default, il database viene posizionato in una directory relativa alla directory Tomcat.
Se si imposta dbType come default, è consigliabile specificare il percorso completo dell'URL JDBC, non solo il percorso relativo.
Ad esempio: jdbc:h2:./ThingworxPlatform/ssoSecurityConfig/sso-oauth2-client-db
H2
File war H2 ThingWorx nei file di database H2 ThingworxStorage/database.
postgres
Nella tabella oauth_client_token nel database PostgreSQL di ThingWorx.
mssql
Nella tabella oauth_client_token nel database MS SQL di ThingWorx.
hana
Nella tabella oauth_client_token nel database SAP HANA 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.
Azure AD come CAS: vedere l'argomento relativo all'aggiornamento dei file di configurazione ThingWorx nella documentazione di autorizzazione di Azure AD.
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
È stato utile?