Конфигурирование файла sso-settings.json
Создайте файл sso-settings.json в каталоге ssoSecurityConfig.
Если для среды требуется другой путь, задайте значение переменной среды THINGWORX_SSO_SETTINGS, чтобы сохранить файл sso-settings.json в другом расположении.
Ниже приведен пример структуры файла sso-settings.json:
{
"BasicSettings": {
"clientBaseUrl": "См. информацию в таблице ниже",
"idpMetadataFilePath": "См. информацию в таблице ниже",
"metadataEntityId": "См. информацию в таблице ниже",
"metadataEntityBaseUrl": "См. информацию в таблице ниже",
"webSSOProfileConsumerResponseSkew": "См. информацию в таблице ниже",
"webSSOProfileConsumerReleaseDOM": "См. информацию в таблице ниже",
"webSSOProfileResponseSkew": "См. информацию в таблице ниже",
"retriggerOnScopesRemoval": "См. информацию в таблице ниже",
"samlAssertionUserNameAttributeName": "См. информацию в таблице ниже",
"samlAssertionMaxAuthenticationAge": "См. информацию в таблице ниже",
"ptcOperatorsGroupName": "См. информацию в таблице ниже",
"samlGroupClaimName": "См. информацию в таблице ниже",
"administratorAlias": "См. информацию в таблице ниже",
“administratorInternalName": "Administrator",
"authnContextAsPassword": "См. информацию в таблице ниже"
},
"AccessTokenPersistenceSettings": {
"dbType": "См. информацию в таблице ниже",
"driverClassName": "См. информацию в таблице ниже",
"url": "См. информацию в таблице ниже",
"username": "См. информацию в таблице ниже",
"password": "См. информацию в таблице ниже",
"encryptTokenInDatabase": "См. информацию в таблице ниже",
},
"KeyManagerSettings": {
"keyStoreFilePath": "См. информацию в таблице ниже",
"keyStoreStorePass": "См. информацию в таблице ниже",
"keyStoreKey": "См. информацию в таблице ниже",
"keyStoreKeyPass": "См. информацию в таблице ниже"
},
"AuthorizationServersSettings": {
"<AuthorizationServerId1>": {
"clientId": "См. информацию в таблице ниже",
"clientSecret": "См. информацию в таблице ниже",
"authorizeUri": "См. информацию в таблице ниже",
"tokenUri": "См. информацию в таблице ниже",
"clientAuthScheme": "См. информацию в таблице ниже"
},
"<AuthorizationServerId2>": {
"clientId": "См. информацию в таблице ниже",
"clientSecret": "См. информацию в таблице ниже",
"authorizeUri": "См. информацию в таблице ниже",
"tokenUri": "См. информацию в таблице ниже",
"clientAuthScheme": "См. информацию в таблице ниже"
"mandatoryScopes": "См. информацию в таблице ниже"
}
}
}
}
* 
Убедитесь, что значение каждого параметра исправлено согласно вашим требованиям. Реализация может варьироваться в зависимости от нескольких факторов, таких как место размещения ThingWorx, политика безопасности организации и сервер авторизации для вашего объединения. Используйте информацию, приведенную в следующих таблицах, в качестве руководства при задании значений различных параметров.
В следующей таблице приведено описание других параметров и значений по умолчанию из раздела BasicSettings файла sso-settings.json.
Параметр
Описание
Значение
clientBaseUrl
Определяет URL-адрес экземпляра сервера ThingWorx.
Задайте полное доменное имя (FQDN) сервера ThingWorx.
При конфигурировании 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 для работы в среде высокой доступности (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.
ptcOperatorsGroupName
Необязательный.
Задайте этот параметр для автоматического конфигурирования группы (как определено в IDP) в составе группы администраторов ThingWorx
administratorAlias
Необязательный.
Имя администратора в том виде, в котором оно сконфигурировано в CAS[IDP].
administratorInternalName
Требуется, если определена опция administratorAlias.
Имя администратора в том виде, в котором оно сконфигурировано в ThingWorx.
Например, Administrator.
samlGroupClaimName
Необязательный.
Этот параметр применим только тогда, когда определено ptcOperatorsGroupName.
Введите значение IDP SAML Group Claim Name, сконфигурированное в CAS, для завершения автоматизации для этой группы в аутентификаторе SSO Thingworx. Дополнительные сведения см. в разделе ThingworxSSOAuthenticator.
Примеры:
Для PingFederate CAS: группа
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.
postgres
mssql
driverClassName
Определяет имя класса драйвера, которое используется в файле platform-settings.json.
Если для dbType задано значение postgres, задайте org.postgresql.Driver.
Если для dbType задано значение mssql, задайте com.microsoft.sqlserver.jdbc.SQLServerDriver.
url
Определяет URL-адрес расположения базы данных для установки ThingWorx.
Если для dbType задано значение postgres, задайте jdbc:postgresql://<имя_хоста>:<порт>/thingworx.
Если для dbType задано значение mssql, задайте jdbc:sqlserver://<имя_хоста>:<порт>;databaseName=thingworx;applicationName=Thingworx=Thingworx.
username
Определяет имя пользователя для базы данных, которая используется системой для хранения маркеров доступа. Имя должно соответствовать имени пользователя, указанному в файле platform-settings.json.
-
password
Определяет пароль для базы данных, которая используется системой для хранения маркеров доступа. Пароль должен соответствовать паролю, указанному в файле platform-settings.json.
-
encryptTokenInDatabase
Установите значение истина, чтобы шифровать маркеры доступа перед сохранением в базе данных.
Если для этой опции задано значение true, файл private-keyset.cfg создается автоматически при запуске ThingWorx и сохраняется в папке ssoSecurityConfig. Этот файл набора ключей создается только один раз.
истина
В зависимости от значения dbType, лексемы доступа OAuth 2.0 (утверждения разрешений) сохраняются в различных расположениях. В следующей таблице представлена информация о расположении в базе данных, в котором хранятся утверждения разрешений.
dbType
Расположение в базе данных, в котором хранятся утверждения разрешений
postgres
В таблице oauth_client_token в базе данных PostgreSQL ThingWorx.
mssql
В таблице oauth_client_token в базе данных MS SQL 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
<AuthorizationServerId1>.mandatoryScopes
Необязательно для CAS, отличного от AzureAD и ADFS. Эта контекстная область будет автоматически добавлена к запрашиваемому значению accessToken при определении этого параметра.
* 
При наличии нескольких контекстных областей используйте пробел в качестве разделителя.
Требуется для AzureAD в качестве CAS. Обязательное значение - "offline_access".
Требуется для ADFS - это может быть любое значение, которое не определено в списке контекстных областей на сервере ADFS.
Было ли это полезно?