Crittografia delle password per SSO
Per utilizzare il keystore, il provider di keystore utilizza un token protetto che viene memorizzato in modalità crittografata in un file. Tutti i dati scritti nel keystore vengono memorizzati in modo sicuro tramite la password. La prima volta che il provider viene avviato, genera una password casuale e un file keystore, se non sono già esistenti.
* 
La password e il file del keystore devono essere limitati solo all'utente dell'applicazione. L'utente dell'applicazione deve disporre dei permessi di lettura/scrittura per i file.
* 
Gli esempi riportati di seguito sono basati su Windows. Modificare i comandi in base alle esigenze se si utilizza un sistema operativo basato su Linux.
Per creare in anticipo un file keystore e memorizzarvi i dati iniziali, è necessario utilizzare lo strumento di gestione della protezione.
1. Ottenere il file ZIP dello strumento di gestione della protezione dal sito del supporto tecnico PTC. Se lo strumento è già installato, andare al passo 3.
2. Estrarre il contenuto del file ZIP in una directory.
3. Creare un file di configurazione con i parametri seguenti e posizionarlo nella cartella bin dei file decompressi.
* 
In questo esempio il file è denominato keystore.conf, la versione dello strumento è 1.0.0.36 e si trova in C://security-common-cli-1.0.0.36/bin.
* 
Il parametro default-encryption-key-length deve corrispondere alla configurazione dell'applicazione. In ThingWorx è il parametro InternalAesCryptographicKeyLength situato in platform-settings.json. Il valore di default è 128 ma, se si utilizza Java 1.8.0_162 o versioni successive, è possibile utilizzare la crittografia a 256 bit. Se necessario, è inoltre possibile usare le versioni precedenti di Java aggiornando i criteri di Java per il limite di dimensione della chiave.
{
security {
secret-provider = "com.thingworx.security.provider.keystore.KeyStoreProvider"
default-encryption-key-length = 128
keystore {
password-file-path = "/ThingworxPlatform/ssoSecurityConfig"
password-file-name = "keystore-password"
path = "/ThingworxPlatform/ssoSecurityConfig"
name = "_sso_keystore"
}
}
}
4. Arrestare il server ThingWorx.
5. Avviare un prompt dei comandi come amministratore e andare al percorso security-common-cli-1.0.0.36\bin.
6. Per passare al prompt della shell dello strumento, eseguire il comando seguente:
C:\security-common-cli-1.0.0.36\bin> security-common-cli.bat <path to keystore>\keystore.conf
7. Per inserire le password, eseguire l'insieme di comandi riportati di seguito.
Password di database:

> set encrypt.accesstoken.password <add-password-here>
Password dell'archivio del keystore (password per sso-keystore.jks):
> set encrypt.keystorestore.password <add-keystorestore-password-here>
Password della chiave del keystore (password per le chiavi in sso-keystore.jks):
> set encrypt.keystorekey.password <add-keystorekey-password-here>
Segreti client del provider di servizi: per ogni AuthorizationServersSettings.<IdServerAutorizzazione> menzionato nel file /ThingworxPlatform/ssoSecurityConfig/sso-settings.json.

> set <AuthorizationServerId>.encrypt.SP.clientSecret <add-SP-clientSecret-here>
Ad esempio, per il file di configurazione sso-settings.json di seguito, eseguire i comandi seguenti:
"AuthorizationServersSettings": {
"PingFed1": {
"clientId": "twx-sp-client-1",
"clientSecret": "twx-sp-client_1234",
"authorizeUri": "https://pingfed1.com:9031/as/authorization.oauth2",
"tokenUri": "https://pingfed1.com:9031/as/token.oauth2",
"clientAuthScheme": "form"
},
"PingFed2": {
"clientId": "twx-sp-client-2",
"clientSecret": "twx-sp-client_123456",
"authorizeUri": "https://pingfed2.com:9031/as/authorization.oauth2",
"tokenUri": "https://pingfed2.com:9031/as/token.oauth2",
"clientAuthScheme": "form"
}
}

Run:
> set PingFed1.encrypt.SP.clientSecret twx-sp-client_1234
> set PingFed2.encrypt.SP.clientSecret twx-sp-client_123456
Segreto client del provider di risorse (solo nel caso in cui ThingWorx sia configurato come provider di risorse):
> set encrypt.RP.clientSecret <add-clientSecret-here>
8. Digitare exit per uscire dalla modalità shell:
> exit
9. Aprire /ThingworxPlatform/ssoSecurityConfig/sso-settings.json ed effettuare gli aggiornamenti seguenti:
Password di database: in AccessTokenPersistenceSettings modificare il valore password in:
"encrypt.accesstoken.password"
Password dell'archivio del keystore: in KeyManagerSettings modificare il valore keyStoreStorePass in:
"encrypt.keystorestore.password"
Password della chiave del keystore: in KeyManagerSettings modificare il valore keyStoreKeyPassvalue in:
"encrypt.keystorekey.password"
Segreti client del provider di servizi: per ogni AuthorizationServersSettings.<IdServerAutorizzazione>.clientSecret, modificare il valore clientSecret in:
"encrypt.SP.clientSecret"
10. Se ThingWorx è configurato come provider di risorse, aprire il file /ThingworxPlatform/ssoSecurityConfig/resourceServerSettings.json ed effettuare l'aggiornamento seguente:
Segreto client del provider di risorse: in ResourceServerSettings.accessTokenServicesSettings modificare il valore clientSecret in:
"encrypt.RP.clientSecret"
11. Avviare il server ThingWorx.
È stato utile?