Конфигурирование файла sso-settings.json
* 
Выполните шаги, которые связаны с ThingWorx Flow, при работе с версиями, предшествующими ThingWorx Flow 9.2. Шаги выполняются автоматически в ThingWorx Flow 9.2. Если установлено приложение ThingWorx Flow, необходимо остановить все сервисы ThingWorx Foundation и ThingWorx Flow, включая RabbitMQ и Nginx, перед настройкой файла sso-settings.json. После конфигурирования этого файла необходимо сначала перезапустить RabbitMQ, а затем все сервисы ThingWorx Foundation и ThingWorx Flow, включая Nginx.
Создайте файл sso-settings.json в каталоге ssoSecurityConfig.
Если для среды требуется другой путь, задайте значение переменной среды THINGWORX_SSO_SETTINGS, чтобы сохранить файл sso-settings.json в другом расположении.
Ниже приведен пример структуры файла sso-settings.json:
{
"BasicSettings": {
"clientBaseUrl": "См. сведения в таблице ниже",
"idpMetadataFilePath": "См. сведения в таблице ниже",
"metadataEntityId": "См. сведения в таблице ниже",
"metadataEntityBaseUrl": "См. сведения в таблице ниже",
"webSSOProfileConsumerResponseSkew": "См. сведения в таблице ниже",
"webSSOProfileConsumerReleaseDOM": "См. сведения в таблице ниже",
"webSSOProfileResponseSkew": "См. сведения в таблице ниже",
"retriggerOnScopesRemoval": "См. сведения в таблице ниже",
"samlAssertionUserNameAttributeName": "См. сведения в таблице ниже",
"samlAssertionMaxAuthenticationAge": "См. сведения в таблице ниже",
"authnContextAsPassword": "См. сведения в таблице ниже"
},
"AccessTokenPersistenceSettings": {
"dbType": "См. сведения в таблице ниже",
"driverClassName": "См. сведения в таблице ниже",
"url": "См. сведения в таблице ниже",
"username": "См. сведения в таблице ниже",
"password": "См. сведения в таблице ниже",
"encryptTokenInDatabase": "См. сведения в таблице ниже",
"keyczarKeyFolderPath": "Устаревшее с 9.3 и более поздних версий. См. сведения в таблице ниже"
},
"KeyManagerSettings": {
"keyStoreFilePath": "См. сведения в таблице ниже",
"keyStoreStorePass": "См. сведения в таблице ниже",
"keyStoreKey": "См. сведения в таблице ниже",
"keyStoreKeyPass": "См. сведения в таблице ниже"
},
"AuthorizationServersSettings": {
"<AuthorizationServerId1>": {
"clientId": "См. сведения в таблице ниже",
"clientSecret": "См. сведения в таблице ниже",
"authorizeUri": "См. сведения в таблице ниже",
"tokenUri": "См. сведения в таблице ниже",
"clientAuthScheme": "См. сведения в таблице ниже"
},
"<AuthorizationServerId2>": {
"clientId": "См. сведения в таблице ниже",
"clientSecret": "См. сведения в таблице ниже",
"authorizeUri": "См. сведения в таблице ниже",
"tokenUri": "См. сведения в таблице ниже",
"clientAuthScheme": "См. сведения в таблице ниже"
}
}
}
}
* 
Убедитесь, что значение каждого параметра исправлено согласно вашим требованиям. Реализация может варьироваться в зависимости от нескольких факторов, таких как место размещения ThingWorx, политика безопасности организации и сервер авторизации для вашего объединения. Используйте информацию, приведенную в следующих таблицах, в качестве руководства при задании значений различных параметров.
В следующей таблице приведено описание других параметров и значений по умолчанию из раздела BasicSettings файла sso-settings.json.
Параметр
Описание
Значение
clientBaseUrl
Определяет URL-адрес экземпляра сервера ThingWorx.
Задайте полное доменное имя (FQDN) сервера ThingWorx.
Если установлено приложение ThingWorx Flow, необходимо указать имя хост-компьютера ThingWorx Flow Nginx и номер порта ThingWorx Flow Nginx в URL-адресе.
При конфигурировании ThingWorx для работы в среде высокой доступности (HA) укажите хост-компьютер и порт балансировщика нагрузки.
http://<Полное доменное имя ThingWorx>:<port-number>/Thingworx
ИЛИ
Для ThingWorx Flow укажите https://<имя хост-компьютера ThingWorx Flow Nginx>:<номер порта ThingWorx Flow Nginx>/Thingworx
ИЛИ
В среде с высокой доступностью укажите https://<имя хост-компьютера балансировщика нагрузки>:<номер порта балансировщика нагрузки>/Thingworx
idpMetadataFilePath
Определяет абсолютное расположение пути к файлу метаданных IdP.
/ThingworxPlatform/ssoSecurityConfig/sso-idp-metadata.xml
metadataEntityId
Определяет идентификатор сущности соединения поставщика услуг.
PingFederate в качестве CAS: используйте уникальный идентификатор, который был выбран при конфигурировании соединения с поставщиком сервисов.
Azure AD в качестве CAS: используйте Identifier (Entitity ID), который был определен при конфигурировании базовых настроек для SAML.
AD FS в качестве CAS: используйте Relying party trust identifier, определенный при конфигурировании настроек доверия проверяющей стороны.
-
metadataEntityBaseUrl
Определяет полное доменное имя сервера ThingWorx.
* 
Не рекомендуется использовать доменные имена, которые определены не полностью. Если организация хочет использовать не полностью определенное доменное имя, ИТ-отдел должен обеспечить доступность доменного имени для клиентских компьютеров и правильно настроить его в файлах конфигурации SSO ThingWorx.
Если установлено приложение ThingWorx Flow, укажите URL-адрес ThingWorx Flow Nginx.
* 
Выполните этот шаг, если используются версии, предшествующие ThingWorx Flow 9.2. Этот шаг в ThingWorx Flow 9.2 выполняется автоматически.
При конфигурировании ThingWorx для работы в среде высокой доступности (HA) укажите хост-компьютер и порт балансировщика нагрузки.
http://<Полное доменное имя ThingWorx>:<port-number>/Thingworx
ИЛИ
Для ThingWorx Flow укажите https://<имя хост-компьютера ThingWorx Flow Nginx>:<номер порта ThingWorx Flow Nginx>/Thingworx
ИЛИ
В среде с высокой доступностью укажите https://<имя хост-компьютера балансировщика нагрузки>:<номер порта балансировщика нагрузки>/Thingworx
webSSOProfileConsumerResponseSkew
Определяет допустимое отклонение отклика потребителя по протоколу SAML 2.0 WebSSO.
При задании этого значения необходимо учитывать собственные требования безопасности, а также задержку в корпоративной сети.
Используйте эту настройку, чтобы задать разрешенный интервал времени (в секундах) для возвращения ответа на запрос входа в систему из сервиса CAS в ThingWorx. Если ответ на запрос входа в систему занимает больше времени, чем задано этим значением, то попытка входа приводит к отказу.
Допустимое отклонение - это допустимое отклонение времени ответа, разрешенное получателем из-за предполагаемого различия системных часов. Чтобы минимизировать влияние отклонения, рекомендуется обеспечивать надежную синхронизацию часов во всех включенных системах.
300
webSSOProfileConsumerReleaseDOM
Определяет, следует ли сохранять утверждение SAML платформой безопасности по завершении аутентификации.
Если установлено значение ложь, утверждение SAML сохраняется по завершении аутентификации.
истина
webSSOProfileResponseSkew
Определяет допустимое отклонение для профиля SAML 2.0 Web SSO.
При задании этого значения необходимо учитывать собственные требования безопасности, а также задержку в корпоративной сети.
Допустимое отклонение - это допустимое отклонение времени ответа, разрешенное получателем из-за предполагаемого различия системных часов. Чтобы минимизировать влияние отклонения, рекомендуется обеспечивать надежную синхронизацию часов во всех включенных системах.
300
retriggerOnScopesRemoval
Определяет, изменился ли список требуемых контекстных областей и необходимо ли его обновить.
Если установлено значение истина, контекстная область была добавлена в список требуемых контекстных областей или удалена из него.
Если установлено значение ложь, контекстная область была добавлена в список требуемых контекстных областей.
истина
samlAssertionUserNameAttributeName
Определяет, какой атрибут SAML переносит значение, которое сохраняет имена пользователей ThingWorx при входе в систему. Удостоверьтесь, что значение этого атрибута в поставщике удостоверений соответствует значениям, используемым для имен пользователей ThingWorx.
* 
Для учетной записи администратора ThingWorx должно быть задано значение имени пользователя Администратор. Удостоверьтесь, что поставщик удостоверений (IdP) настроен так, чтобы для учетной записи администратора возвращалось значение Администратор. Дополнительные сведения см. в разделе Создание псевдонима администратора ThingWorx в поставщике удостоверений.
PingFederate или Azure AD в качестве CAS:
uid
AD FS в качестве CAS:
http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name
samlAssertionMaxAuthenticationAge
Определяет максимальный возраст (в секундах) утверждения SAML 2.0 до истечения срока его действия. Также определяет максимальное время сессии для утверждения аутентификации.
Задайте значение, соответствующее значению времени ожидания для сессии, которое определено в поставщике удостоверений. Это значение будет отличаться в зависимости от используемого IdP.
PingFederate в качестве CAS с LDAP IdP (Windchill): 7200 (значение по умолчанию).
AD FS в качестве IdP (с AD FS или PingFederate в качестве CAS): 28800.
Azure AD в качестве IdP (с Azure AD или PingFederate в качестве CAS): 86400.
authnContextAsPassword
Дополнительно. В некоторых редких случаях IdP требует поместить следующее утверждение в запрос 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>
В таких случаях необходимо определить это свойство.
false
* 
Если требуется активировать аутентификатор ключей приложений при включенном SSO, необходимо добавить следующий раздел конфигурации ApplicationKeySettings в настройки sso-settings.json в BasicSettings. Это необходимо делать только в том случае, если требуется использовать Ключи приложений для аутентификации через запросы REST API. Ключи приложений можно продолжать использовать с устройств Edge через WebSocket независимо от того, включена ли эта настройка.
{
"BasicSettings": {
...
},
"ApplicationKeySettings": {
"enabled": true
},
...
}
В следующих таблицах описаны различные параметры и значения по умолчанию в разделе AccessTokenPersistenceSettings файла sso-settings.json:
Параметр
Описание
Значение
dbType
Определяет тип базы данных, которая сконфигурирована и используется для установки ThingWorx.
Чтобы использовать базу данных, которая задана в файле platform-settings.json, укажите тот же тип базы данных и учетные данные, которые заданы в файле platform-settings.json.
Чтобы использовать выделенную базу данных для лексемы авторизации, укажите значение default. После настройки default создается новая выделенная база данных H2.
default
* 
Этот тип базы данных default является выбором по умолчанию для настроек SSO.
H2
postgres
mssql
hana
driverClassName
Определяет имя класса драйвера, которое используется в файле platform-settings.json.
Если для dbType задано значение default, задайте org.h2.Driver.
Если для dbType задано значение h2, задайте org.h2.Driver.
Если для dbType задано значение postgres, задайте org.postgresql.Driver.
Если для dbType задано значение mssql, задайте com.microsoft.sqlserver.jdbc.SQLServerDriver.
Если для dbType задано значение hana, задайте com.sap.db.jdbc.Driver
url
Определяет URL-адрес расположения базы данных для установки ThingWorx.
Если для dbType задано значение default, задайте jdbc:h2:\\<диск>:\\ThingworxPlatform\\ssoSecurityConfig\\sso-oauth2-client-db.
Если для dbType задано значение h2, этот параметр не требуется.
Если для dbType задано значение postgres, задайте jdbc:postgresql://<имя_хоста>:<порт>/thingworx.
Если для dbType задано значение mssql, задайте jdbc:sqlserver://<имя_хоста>:<порт>;databaseName=thingworx;applicationName=Thingworx=Thingworx.
Если для dbType задано значение hana, задайте jdbc:sap://<ip_адрес>:39041/?databaseName=thingworx&currentschema=TWADMIN.
username
Определяет имя пользователя для базы данных, которая используется системой для хранения маркеров доступа. Имя должно соответствовать имени пользователя, указанному в файле platform-settings.json.
* 
Если в ThingWorx включен единый вход в систему (SSO), база данных H2 должна быть защищена паролем. Дополнительные сведения см. в разделе Защита паролем базы данных H2 при включении единого входа в систему (SSO).
-
password
Определяет пароль для базы данных, которая используется системой для хранения маркеров доступа. Пароль должен соответствовать паролю, указанному в файле platform-settings.json.
* 
Если в ThingWorx включен единый вход в систему (SSO), база данных H2 должна быть защищена паролем. Дополнительные сведения см. в разделе Защита паролем базы данных H2 при включении единого входа в систему (SSO).
-
encryptTokenInDatabase
Установите значение истина, чтобы шифровать маркеры доступа перед сохранением в базе данных.
Для ThingWorx 9.3 и более поздних версий:
Если для этой опции задано значение true, файл private-keyset.cfg создается автоматически при запуске ThingWorx и сохраняется в папке ssoSecurityConfig. Этот файл набора ключей создается только один раз.
Для ThingWorx 9.2.x и более ранних версий:
Задайте в keyczarKeyFolderPath допустимое расположение keyCzarKey.
истина
keyczarKeyFolderPath
Для ThingWorx 9.3 и более поздних версий:
Инструмент Keyczar устарел и заменен на Tink. Это свойство больше не требуется для шифрования лексем доступа перед их сохранением в базе данных.
Для ThingWorx 9.2.x и более ранних версий:
Если для параметра encryptTokenInDatabase установлено значение true, этот путь должен указывать на действительное расположение keyCzarKey. Измените путь, чтобы использовать каталог, в котором находится папка ThingworxPlatform\ssoSecurityConfig\symmetric.
* 
Настоятельно рекомендуется использовать место хранения ключа keystore, отличное от места хранения файла sso-settings.json. Это позволит применить более детализированные средства управления доступом к этим файлам в файловой системе. Общие настройки для ThingWorx должны быть сохранены в расположении, отличном как от папки ключа KeyStore, так и от файла sso-settings.json.
Для ThingWorx 9.3 и более поздних версий:
Для ThingWorx 9.2.x и более ранних версий:
Для Windows: <диск>:\\ThingworxPlatform\\ssoSecurityConfig\\symmetric
Здесь <диск> указывает диск, на котором установлено приложение ThingWorx.
Для Linux: <полный путь>/ThingworxPlatform/ssoSecurityConfig/symmetric
В зависимости от значения dbType, лексемы доступа OAuth 2.0 (утверждения разрешений) сохраняются в различных расположениях. В следующей таблице представлена информация о расположении в базе данных, в котором хранятся утверждения разрешений.
dbType
Расположение в базе данных, в котором хранятся утверждения разрешений
default
Создается база данных поднабора H2, определяемая путем, задаваемым параметром url. По умолчанию база данных размещается в каталоге, который является относительным для каталога Tomcat.
Если для dbType задано значение default, рекомендуется указывать полный путь для URL JDBC, а не только относительный путь.
Пример: jdbc:h2:./ThingworxPlatform/ssoSecurityConfig/sso-oauth2-client-db
H2
War-файлы H2 ThingWorx в файлах базы данных ThingworxStorage/database H2.
postgres
В таблице oauth_client_token в базе данных PostgreSQL ThingWorx.
mssql
В таблице oauth_client_token в базе данных MS SQL ThingWorx.
hana
В таблице oauth_client_token в базе данных SAP HANA ThingWorx.
В следующей таблице приведено описание других параметров и значений по умолчанию из раздела KeyManagerSettings файла sso-settings.json.
Параметр
Описание
Значение
keyStoreFilePath
Определяет абсолютное расположение пути к файлу KeyStore. В зависимости от среды, измените путь так, чтобы использовался каталог, в котором сохранен файл KeyStore.
* 
Настоятельно рекомендуется использовать место хранения ключа keystore, отличное от места хранения файла sso-settings.json. Это позволит применить более детализированные средства управления доступом к этим файлам в файловой системе. Общие настройки для ThingWorx должны быть сохранены в расположении, отличном как от ключа KeyStore, так и от файла sso-settings.json.
Для Windows: <диск>:\\ThingworxPlatform\\ssoSecurityConfig\\sso-keystore.jks
Здесь <диск> указывает диск, на котором установлено приложение ThingWorx.
Для Linux: <полный путь>/ThingworxPlatform/ssoSecurityConfig/sso-keystore.jks
keyStoreStorePass
Заданный пароль KeyStore.
-
keyStoreKey
Определяет ключ по умолчанию.
-
keyStoreKeyPass
Определяет пароль для доступа к закрытым ключам.
-
В следующей таблице приведено описание других параметров и значений по умолчанию из раздела AuthorizationServersSettings файла sso-settings.json.
* 
Настройки AuthorizationServersSettings могут содержать информацию для нескольких серверов авторизации. Каждый сервер определяется уникальным идентификатором в файле sso-settings.json.
Параметр
Описание
Значение
<AuthorizationServerId1>.clientId
Указывает идентификатор клиента, используемый при получении лексем доступа от сервера авторизации.
* 
Выберите предоставляемое значение для переменной AuthorizationServerId1. Это значение переменной AuthorizationServerId1 используется для конфигурирования настроек подключения для соединителя интеграции или медиаобъекта. Если у администратора или разработчика, который конфигурирует настройки соединителя, нет доступа к каталогу ssoSecurityConfig, необходимо предоставить им эту информацию.
-
<AuthorizationServerId1>.clientSecret
Определяет идентификационные данные клиента, которые используются для аутентификации на сервере авторизации.
Задайте полностью определенное значение URL-адреса DNS-сервера в сети.
-
<AuthorizationServerId1>.authorizeUri
Определяет URI, по которому должен перенаправляться пользователь для авторизации лексемы доступа.
PingFederate в качестве CAS:
https://<Наименование хост-компьютера PingFederate>:<номер-порта-PingFederate>/as/authorization.oauth2
* 
Используйте порт времени выполнения PingFederate, который указывается в установке PingFederate.
Azure AD в качестве CAS: см. раздел Update the ThingWorx Configuration Files (Обновление файлов конфигурации ThingWorx) в документации по авторизации AD Azure (на английском языке).
AD FS в качестве CAS: см. раздел Update the ThingWorx Configuration Files (Обновление файлов конфигурации ThingWorx) в документации по авторизации AD FS (на английском языке).
<AuthorizationServerId1>.tokenUri
Определяет URI, используемый для получения лексемы доступа OAuth2.
Задайте полностью определенное значение URL-адреса DNS-сервера в сети.
https://<Наименование хост-компьютера PingFederate>:<номер-порта-PingFederate>/as/token.oauth2
* 
Используйте порт времени выполнения PingFederate, который указывается в установке PingFederate.
<AuthorizationServerId1>.clientAuthScheme
Определяет схему, используемую для аутентификации клиента. Допустимые значения:
form
header
query
нет
form
Было ли это полезно?