Configurare il file sso-settings.json
* 
Se è stato installato in un'istanza di ThingWorx Core che si sta configurando per SSO, è necessario arrestare tutti i servizi ThingWorx Core e , 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 Core e , 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": "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 riportata di seguito"
}
}
}
}
* 
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 del server ThingWorx.
Se è installato , specificare l'URL Nginx di .
http://<nome-host>:<port-number>/Thingworx
OPPURE
https://<nome-host Nginx ThingWorx Flow>:<numero-porta Nginx ThingWorx Flow>/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.
Rappresenta l'ID univoco scelto durante la configurazione della connessione del provider di servizi in PingFederate.
metadataEntityBaseUrl
Specifica il nome di dominio completo del server ThingWorx. Questo valore è lo stesso dell'URL del browser ThingWorx.
Se è installato , specificare l'URL Nginx di .
* 
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.
http://<nome-host>:<port-number>/Thingworx
OPPURE
https://<nome-host Nginx ThingWorx Flow>:<numero-porta Nginx ThingWorx Flow>/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.
uid
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.
7200 secondi
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à.
true
* 
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.
true
keyczarKeyFolderPath
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.
In ambiente Windows: <unità>:\\ThingworxPlatform\\ssoSecurityConfig\\symmetric
dove <unità> specifica l'unità in cui è stato installato ThingWorx.
Per Linux: \\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: \\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.
https://<nome-host-PingFederate>:<numero-porta-PingFederate>/as/authorization.oauth2
* 
Utilizzare la porta di esecuzione PingFederate fornita con l'installazione di PingFederate.
<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