Cifrado de contraseñas para SSO
Para trabajar con KeyStore, el proveedor de KeyStore utiliza un token seguro que se almacena cifrado en un fichero. Todos los datos que se escriben en el KeyStore se almacenan de forma segura mediante la contraseña. La primera vez que se inicia el proveedor, genera un valor de contraseña aleatorio y un fichero de KeyStore si aún no existen.
* 
La contraseña de KeyStore y el fichero de KeyStore deben estar restringidos solo al usuario de la aplicación. El usuario de la aplicación debe tener permisos de lectura y escritura para los ficheros.
* 
Los siguientes ejemplos se basan en Windows. Si se utiliza un sistema operativo basado en Linux, se deben cambiar los comandos según sea necesario.
Para crear un fichero de KeyStore con antelación y almacenar los datos iniciales en él, se debe utilizar la Herramienta de gestión de seguridad.
1. Obtenga el fichero ZIP de la herramienta de gestión de seguridad del sitio de soporte técnico de PTC. Si ya tiene esta herramienta instalada, vaya al paso 3.
2. Extraiga el contenido del fichero comprimido en un directorio.
3. Cree un fichero de configuración con los siguientes parámetros y colóquelo en la carpeta bin de los ficheros descomprimidos.
* 
En este ejemplo, el fichero se denomina keystore.conf, la versión de la herramienta es 1.0.0.36 y se encuentra en C://security-common-cli-1.0.0.36/bin.
* 
El parámetro default-encryption-key-length debe coincidir con la configuración de la aplicación. En ThingWorx, el parámetro InternalAesCryptographicKeyLength se encuentra en platform-settings.json. El valor por defecto es 128, pero se puede utilizar la codificación de 256 bits si se utiliza Java 1.8.0_162 o superior. Si fuese necesario, también se puede utilizar con versiones anteriores de Java mediante la actualización de la directiva de Java para el límite de tamaño de la clave.
{
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. Detenga el servidor ThingWorx.
5. Inicie un símbolo del sistema como administrador y vaya a la ubicación de security-common-cli-1.0.0.36\bin.
6. Ejecute el siguiente comando para cambiar al indicador del shell de la herramienta:
C:\security-common-cli-1.0.0.36\bin> security-common-cli.bat <path to keystore>\keystore.conf
7. Ejecute el conjunto de comandos que se indican a continuación para insertar las contraseñas:
Contraseña de base de datos:

> set encrypt.accesstoken.password <add-password-here>
Contraseña del almacén de KeyStore (contraseña para sso-keystore.jks):
> set encrypt.keystorestore.password <add-keystorestore-password-here>
Contraseña de clave de KeyStore (contraseña para claves de sso-keystore.jks):
> set encrypt.keystorekey.password <add-keystorekey-password-here>
Secretos de cliente del proveedor de servicios: para cada AuthorizationServersSettings.<IDServidorAutorización> que se menciona en el fichero /ThingworxPlatform/ssoSecurityConfig/sso-settings.json.

> set <AuthorizationServerId>.encrypt.SP.clientSecret <add-SP-clientSecret-here>
Por ejemplo, para el siguiente fichero de configuración sso-settings.json, ejecute los comandos que le siguen:
"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
Secreto de cliente del proveedor de recursos (solo en caso de que ThingWorx esté configurado como proveedor de recursos):
> set encrypt.RP.clientSecret <add-clientSecret-here>
8. Escriba exit para salir del modo shell:
> exit
9. Abra /ThingworxPlatform/ssoSecurityConfig/sso-settings.json y realice las siguientes actualizaciones:
Contraseña de base de datos. En AccessTokenPersistenceSettings, cambie el valor de password a:
"encrypt.accesstoken.password"
Contraseña de almacén de KeyStore. En KeyManagerSettings, cambie el valor de keyStoreStorePass a:
"encrypt.keystorestore.password"
Contraseña de clave de KeyStore. En KeyManagerSettings, cambie keyStoreKeyPassvalue a:
"encrypt.keystorekey.password"
Secretos de cliente del proveedor de servicios: para cada AuthorizationServersSettings.<IDServidorAutorización>.clientSecret, cambie el valor de clientSecret a:
"encrypt.SP.clientSecret"
10. Si ThingWorx está configurado como proveedor de recursos, abra el fichero /ThingworxPlatform/ssoSecurityConfig/resourceServerSettings.json y realice la siguiente actualización:
Secreto de cliente de proveedor de recursos. En ResourceServerSettings. accessTokenServicesSettings, cambie el valor de clientSecret a:
"encrypt.RP.clientSecret"
11. Inicie el servidor de ThingWorx.
¿Fue esto útil?