Шифрование паролей для SSO
Для работы с файлом KeyStore поставщик хранилища ключей использует лексему безопасности, хранящуюся в файле в зашифрованном виде. Все данные, записанные в KeyStore, хранятся безопасно, защищенные паролем. При первом запуске поставщик генерирует случайное значение пароля и файл KeyStore, если они еще не существуют.
* 
Использование пароля KeyStore и файла KeyStore должно быть ограничено только пользователем приложения. Пользователь приложения должен иметь разрешения на чтение/запись для файлов.
* 
Ниже приведены примеры для Windows. Измените команды по мере необходимости при использовании ОС на основе Linux.
Чтобы предварительно создать файл KeyStore и хранить в нем исходные данные, необходимо использовать Инструмент управления безопасностью.
1. ZIP-файл инструмента управления безопасностью можно получить на сайте поддержки PTC. Если этот инструмент уже установлен, перейдите к шагу 3.
2. Извлеките содержимое ZIP-файла в какой-либо каталог.
3. Создайте файл конфигурации со следующими параметрами и поместите его в папку bin разархивированных файлов.
* 
В этом примере имя файла: keystore.conf, версия инструмента: 1.0.0.36, расположение файла: C://security-common-cli-1.0.0.36/bin
* 
Параметр default-encryption-key-length должен соответствовать конфигурации приложения. В ThingWorx это параметр InternalAesCryptographicKeyLength, находящийся в файле platform-settings.json. Значение по умолчанию: 128, но можно использовать 256-разрядное шифрование, если используется версия Java 1.8.0_162 или более поздняя. Если необходимо, можно также использовать более ранние версии Java, обновив политику Java для ограничения размера ключа.
{
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. Остановите сервер ThingWorx.
5. Откройте окно командной строки как администратор и перейдите в расположение security-common-cli-1.0.0.36\bin.
6. Выполните следующую команду, чтобы переключиться к запросу оболочки инструмента:
C:\security-common-cli-1.0.0.36\bin> security-common-cli.bat <path to keystore>\keystore.conf
7. Выполните следующие команды, чтобы вставить пароли:
Пароль базы данных:

> set encrypt.accesstoken.password <add-password-here>
Пароль хранилища KeyStore (пароль для файла sso-keystore.jks):
> set encrypt.keystorestore.password <add-keystorestore-password-here>
Пароль ключей KeyStore (пароль для ключей в файле sso-keystore.jks):
> set encrypt.keystorekey.password <add-keystorekey-password-here>
Секреты клиента поставщика сервиса: для каждого AuthorizationServersSettings.<AuthorizationServerId> упоминается в файле /ThingworxPlatform/ssoSecurityConfig/sso-settings.json.

> set <AuthorizationServerId>.encrypt.SP.clientSecret <add-SP-clientSecret-here>
Например, для файла конфигурации sso-settings.json ниже выполните следующие команды:
"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
Секрет клиента поставщика ресурсов (только в случае, когда в качестве поставщика ресурсов сконфигурирован ThingWorx):
> set encrypt.RP.clientSecret <add-clientSecret-here>
8. Введите exit, чтобы выйти из режима оболочки:
> exit
9. Откройте файл /ThingworxPlatform/ssoSecurityConfig/sso-settings.json и внесите следующие изменения:
Пароль базы данных: в разделе AccessTokenPersistenceSettings измените значение password на
"encrypt.accesstoken.password"
Пароль хранилища KeyStore: в разделе KeyManagerSettings измените значение keyStoreStorePass на
"encrypt.keystorestore.password"
Пароль ключей KeyStore: в разделе KeyManagerSettings измените значение keyStoreKeyPassvalue на
"encrypt.keystorekey.password"
Секреты клиента поставщика сервиса: для каждого AuthorizationServersSettings.<ИДсервераАвторизации>.clientSecret, измените значение clientSecret на
"encrypt.SP.clientSecret"
10. Если ThingWorx сконфигурирован как поставщик ресурсов, откройте файл /ThingworxPlatform/ssoSecurityConfig/resourceServerSettings.json и внесите следующее изменение:
Секрет клиента поставщика ресурсов: в ResourceServerSettings.accessTokenServicesSettings измените значение clientSecret на
"encrypt.RP.clientSecret"
11. Запустите сервер ThingWorx.
Было ли это полезно?