sso-settings.json ファイルの設定
* 
SSO 用に設定している ThingWorx Core インスタンスに がインストールされている場合、sso-settings.json ファイルを設定する前に、RabbitMQ と Nginx を含むすべての ThingWorx Core および サービスを停止する必要があります。このファイルを設定した後で、RabbitMQ を最初に再起動してから、Nginx を含む ThingWorx Core と のすべてのサービスを再起動する必要があります。
ssoSecurityConfig ディレクトリに sso settings.json ファイルを作成します。
お使いの環境で別のパスが必要な場合は、THINGWORX_SSO_SETTINGSsso-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": "詳細については、次のテーブルを参照してください"
},
"KeyManagerSettings": {
"keyStoreFilePath": "詳細については、次のテーブルを参照してください",
"keyStoreStorePass": "詳細については、次のテーブルを参照してください",
"keyStoreKey": "詳細については、次のテーブルを参照してください",
"keyStoreKeyPass": "詳細については、次のテーブルを参照してください"
},
"AuthorizationServersSettings": {
"<AuthorizationServerId1>": {
"clientId": "詳細については、次のテーブルを参照してください",
"clientSecret": "詳細については、次のテーブルを参照してください",
"authorizeUri": "詳細については、次のテーブルを参照してください",
"tokenUri": "詳細については、次のテーブルを参照してください",
"clientAuthScheme": "詳細については、次のテーブルを参照してください"
},
"<AuthorizationServerId2>": {
"clientId": "詳細については、次のテーブルを参照してください",
"clientSecret": "詳細については、次のテーブルを参照してください",
"authorizeUri": "詳細については、次のテーブルを参照してください",
"tokenUri": "詳細については、次のテーブルを参照してください",
"clientAuthScheme": "詳細については、次のテーブルを参照してください"
}
}
}
}
* 
要件に合わせて各パラメータの値を編集するようにしてください。実装は、ThingWorx がホストされている場所、組織のセキュリティポリシー、フェデレーションの CAS など、いくつかの要因によって異なる場合があります。次のテーブルに示す情報をガイダンスとして使用して、さまざまなパラメータの値を設定します。
以下のテーブルでは、sso-settings.json ファイルの BasicSettings セクションの各種パラメータとデフォルト値について説明します。
パラメータ
説明
clientBaseUrl
ThingWorx サーバーインスタンスの URL を指定します。
これは ThingWorx サーバーの完全修飾ドメイン名に設定します。
がインストールされている場合は、 Nginx の URL を指定します。
http://<ホスト名>:<port-number>/Thingworx
または
https://<ThingWorx Flow Nginx ホスト名>:<ThingWorx Flow Nginx ポート番号>/Thingworx
idpMetadataFilePath
IdP メタデータファイルの絶対ファイルパスの場所を指定します。
/ThingworxPlatform/ssoSecurityConfig/sso-idp-metadata.xml
metadataEntityId
サービスプロバイダ接続のエンティティ ID を指定します。
これは、PingFederate でサービスプロバイダの接続を設定するときに選択した一意の ID です。
-
metadataEntityBaseUrl
ThingWorx サーバーの完全修飾ドメイン名を指定します。この値は、ThingWorx ブラウザ URL と同じです。
がインストールされている場合は、 Nginx の URL を指定します。
* 
完全修飾でないドメイン名を使用することはお勧めしません。完全修飾でないドメイン名を使用することを組織で選択している場合は、そのドメイン名がクライアントマシンからアクセス可能であることと、ThingWorx SSO コンフィギュレーションファイル内で正しく設定されていることを、その組織の IT 部門が確認する必要があります。
http://<ホスト名>:<port-number>/Thingworx
または
https://<ThingWorx Flow Nginx ホスト名>:<ThingWorx Flow Nginx ポート番号>/Thingworx
webSSOProfileConsumerResponseSkew
SAML 2.0 WebSSO Assertion Consumer 応答スキュー公差を指定します。
この値を設定するときは、ユーザー個別のセキュリティ要件と企業ネットワークの遅延を考慮してください。
この設定を使用して、CAS から ThingWorx にログインリクエスト応答が返されるまで待つことができる時間の長さ (秒) を設定します。ログインリクエスト応答が返されるまでこの値よりも長い時間がかかる場合、ログイン試行は失敗します。
スキュー公差は、システムクロック間で想定される差を原因として、受信者が許容する応答有効期間の偏差です。関連する各システムのクロックが正しく同期されていることを確認して、スキューの影響を最小限に抑えることが最良事例です。
300
webSSOProfileConsumerReleaseDOM
認証が完了した後にセキュリティフレームワークが SAML アサーションを保持するかどうかを決定します。
False に設定すると、認証が完了した後も SAML アサーションが保持されます。
true
webSSOProfileResponseSkew
SAML 2.0 Web SSO プロファイル応答スキュー公差を指定します。
この値を設定するときは、ユーザー個別のセキュリティ要件と企業ネットワークの遅延を考慮してください。
スキュー公差は、システムクロック間で想定される差を原因として、受信者が許容する応答有効期間の偏差です。関連する各システムのクロックが正しく同期されていることを確認して、スキューの影響を最小限に抑えることが最良事例です。
300
retriggerOnScopesRemoval
必要な範囲のリストが変更され、更新する必要があるかどうかを指定します。
値が true に設定された場合、必要な範囲のリストから範囲が追加または除去されたことを示します。
値が false に設定された場合、必要な範囲のリストに範囲が追加されたことを示します。
true
samlAssertionUserNameAttributeName
ログイン時に ThingWorx ユーザーのユーザー名が格納される値を伝達する SAML 属性を指定します。ID プロバイダ内のこの属性の値が、ThingWorx ユーザー名に使用するユーザー名の値と対応していることを確認します。
* 
ThingWorx の管理者アカウントでは、ユーザー名の値を Administrator に設定する必要があります。管理者のユーザー名として Administrator という値を返すように IdP を必ず設定してください。詳細については、 ID プロバイダでの ThingWorx 管理者エイリアスの作成を参照してください。
uid
samlAssertionMaxAuthenticationAge
SAML 2.0 アサーションが期限切れになるまでの最大経過時間 (秒) を指定します。これにより、認証アサーションの最大セッション時間も指定します。
ID プロバイダで指定したセッションのタイムアウト値に一致する値を設定します。
7200 seconds
authnContextAsPassword
オプション。まれに、次のアサーションを 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>
そのような場合に、このプロパティを定義する必要があります。
true
* 
SSO が有効なときにアプリケーションキー認証を有効にする場合は、次の ApplicationKeySettings のコンフィギュレーションに関するセクションを、BasicSettings の下の sso-settings.json の設定に追加します。この設定は、REST API リクエストを介した認証に アプリケーションキーを使用する場合にのみ必要です。この設定が有効/無効であることに関係なく、アプリケーションキーは、WebSocket を介してエッジデバイスから使用できます。
{
"BasicSettings": {
...
},
"ApplicationKeySettings": {
"enabled": true
},
...
}
以下のテーブルでは、sso-settings.json ファイルの AccessTokenPersistenceSettings セクションの各種パラメータとデフォルト値について説明します。
パラメータ
説明
dbType
ThingWorx のインストールで設定および使用するデータベースのタイプを指定します。
platform-settings.json ファイルで設定されているものと同じデータベースを使用するには、platform-settings.json で設定されているものと同じデータベースタイプおよび資格証明を指定します。
認証トークン専用のデータベースを使用するには、値として "default" を指定します。"default" として設定されると、新規の専用の H2 データベースが作成されます。
default
* 
この "default" データベースタイプは、SSO 設定のデフォルト選択です。
H2
postgres
mssql
hana
driverClassName
platform-settings.json ファイルで使用しているドライバークラス名を指定します。
dbTypedefault として設定されている場合は、org.h2.Driver に設定します。
dbTypeh2 として設定されている場合は、org.h2.Driver に設定します。
dbTypepostgres として設定されている場合は、org.postgresql.Driver に設定します。
dbTypemssql として設定されている場合は、com.microsoft.sqlserver.jdbc.SQLServerDriver に設定します。
dbTypehana として設定されている場合は、com.sap.db.jdbc.Driver に設定します。
url
ThingWorx インストールのデータベースの場所を示す URL を指定します。
dbTypedefault として設定されている場合は、jdbc:h2:\\<ドライブ>:\\ThingworxPlatform\\ssoSecurityConfig\\sso-oauth2-client-db に設定します。
dbTypeh2 として設定されている場合、このパラメータは不要です。
dbTypepostgres として設定されている場合は、jdbc:postgresql://<ホスト名>:<ポート>/thingworx に設定します。
dbTypemssql として設定されている場合は、jdbc:sqlserver://<ホスト名>:<ポート>;databaseName=thingworx;applicationName=Thingworx に設定します。
dbTypehana として設定されている場合は、jdbc:sap://<IP アドレス>:39041/?databaseName=thingworx&currentschema=TWADMIN に設定します。
username
システムがアクセストークンを保存するために使用するデータベースのユーザー名を指定します。これは、platform-settings.json ファイルで指定したユーザー名と一致している必要があります。
* 
SSO が ThingWorx で有効な場合、H2 データベースはパスワードで保護する必要があります。詳細については、 Thingworx で SSO が有効になっている場合の H2 データベースのパスワード保護を参照してください。
-
password
システムがアクセストークンを保存するために使用するデータベースのパスワードを指定します。これは、platform-settings.json ファイルで指定したパスワードと一致している必要があります。
* 
SSO が ThingWorx で有効な場合、H2 データベースはパスワードで保護する必要があります。詳細については、 Thingworx で SSO が有効になっている場合の H2 データベースのパスワード保護を参照してください。
-
encryptTokenInDatabase
データベースで永続化する前にアクセストークンを暗号化する場合は true に設定します。
true
keyczarKeyFolderPath
encryptTokenInDatabase パラメータの値を true に設定した場合、このパスは有効な keyCzarKey の場所をポイントする必要があります。ThingworxPlatform\ssoSecurityConfig\symmetric フォルダが配置されるディレクトリを使用するようにパスを修正します。
* 
キーストアキーには、sso-settings.json ファイルが格納されている場所とは異なるストレージの場所を使用することを強くお勧めします。これにより、これらのファイルにきめ細かいファイルシステムアクセス制御を適用できます。ThingWorx の全般設定は、キーストアキーフォルダおよび sso-settings.json ファイルのどちらとも異なる場所に保存する必要があります。
Windows の場合: <ドライブ>:\\ThingworxPlatform\\ssoSecurityConfig\\symmetric
この <ドライブ> には、ThingWorx をインストールしたドライブを指定します。
Linux の場合: \\ThingworxPlatform\\ssoSecurityConfig\\symmetric
dbType の値に応じて、OAuth 2.0 アクセストークン (権限承認) はさまざまな場所に格納されます。次のテーブルは、権限承認が格納されるデータベース内の場所に関する情報を示しています。
dbType
権限承認が格納されるデータベース内の場所
default
サブセット H2 データベースは、url パラメータのパスで指定された場所に作成されます。デフォルトでは、データベースは Tomcat ディレクトリを基準にしたディレクトリに配置されます。
dbTypedefault に設定した場合は、相対パスだけではなく、JDBC URL の完全修飾パスを指定することをお勧めします。
例: jdbc:h2:/ThingworxPlatform/ssoSecurityConfig/sso-oauth2-client-db
H2
ThingworxStorage/database H2 データベースファイル内の H2 ThingWorx war ファイル。
postgres
ThingWorx PostgreSQL データベースの oauth_client_token テーブル内。
mssql
ThingWorx MS SQL データベースの oauth_client_token テーブル内。
hana
ThingWorx SAP HANA データベースの oauth_client_token テーブル内。
以下のテーブルでは、sso-settings.json ファイルの KeyManagerSettings セクションの各種パラメータとデフォルト値について説明します。
パラメータ
説明
keyStoreFilePath
キーストアの絶対ファイルパスの場所を指定します。使用する環境に応じて、キーストアファイルが保存されるディレクトリを使用するようにパスを修正します。
* 
キーストアキーには、sso-settings.json ファイルが格納されている場所とは異なるストレージの場所を使用することを強くお勧めします。これにより、これらのファイルにきめ細かいファイルシステムアクセス制御を適用できます。ThingWorx の全般設定は、キーストアキーおよび sso-settings.json ファイルのどちらとも異なる場所に保存する必要があります。
Windows の場合: <ドライブ>:\\ThingworxPlatform\\ssoSecurityConfig\\sso-keystore.jks
この <ドライブ> には、ThingWorx をインストールしたドライブを指定します。
Linux の場合: \\ThingworxPlatform\\ssoSecurityConfig\\sso-keystore.jks
keyStoreStorePass
キーストアのパスワードを指定します。
-
keyStoreKey
デフォルトのキーを指定します。
-
keyStoreKeyPass
プライベートキーにアクセスするためのパスワードを指定します。
-
以下のテーブルでは、sso-settings.json ファイルの AuthorizationServersSettings セクションの各種パラメータとデフォルト値について説明します。
* 
AuthorizationServersSettings 設定には、複数の認証サーバーの情報が含まれることがあります。各サーバーは、sso-settings.json ファイル内で一意の識別子によって識別されます。
パラメータ
説明
<AuthorizationServerId1>.clientId
認証サーバーからアクセストークンを取得するときに使用するクライアント識別子を指定します。
* 
AuthorizationServerId1 変数に指定する値を選択します。AuthorizationServerId1 変数のこの値は、統合コネクタまたはメディアエンティティの接続設定に使用されます。コネクタの設定を構成する管理者または開発者が ssoSecurityConfig ディレクトリにアクセスできない場合は、この情報を管理者または開発者に提供する必要があります。
-
<AuthorizationServerId1>.clientSecret
認証サーバーによる認証に使用されるクライアントの資格証明を指定します。
ネットワーク上の完全修飾ドメイン名サーバーの URL に設定します。
-
<AuthorizationServerId1>.authorizeUri
アクセストークンを承認するためにユーザーがリダイレクトされる URI を指定します。
https://<PingFederate ホスト名>:<PingFederate ポート番号>/as/authorization.oauth2
* 
PingFederate インストールで提供される PingFederate ランタイムポートを使用します。
<AuthorizationServerId1>.tokenUri
OAuth2 アクセストークンを取得するために使用する URI を指定します。
ネットワーク上の完全修飾ドメイン名サーバーの URL に設定します。
https://<PingFederate ホスト名>:<PingFederate ポート番号>/as/token.oauth2
* 
PingFederate インストールで提供される PingFederate ランタイムポートを使用します。
<AuthorizationServerId1>.clientAuthScheme
クライアントを認証するために使用する方式を指定します。次の値を使用できます。
form
header
query
none
form