セッションユーザー用の作業指示構築ブロックの設定 (Windchill 認証)
「セッションユーザー」認証オプションでは、Windchill を使用して ThingWorx で認証されます。ユーザーが ThingWorx にアクセスすると、ユーザーは Windchill に転送されて認証されます。認証が完了すると、ユーザーは ThingWorx に戻されます。このコンフィギュレーションでは、WindchillThingWorx の両方に同じユーザーが存在する必要があります。
ThingWorx には、Windchill で認証されたユーザーを ThingWorx で自動的に作成するためのコンフィギュレーションオプションが含まれています。このコンフィギュレーションオプションが選択されていない場合、ユーザーは WindchillThingWorx の両方に個別に存在する必要があります。作業指示構築ブロックのエンティティとサービスにアクセスするには、ThingWorx ユーザーを適切な ThingWorx ユーザーグループに追加する必要があります。ThingWorx でユーザーを自動的に作成するオプションを選択した場合、これらのユーザーが自動的に追加されるユーザーグループを指定できます。
「セッションユーザー」認証オプションを使用するように作業指示構築ブロックを設定するには、WindchillThingWorx、および作業指示構築ブロックでコンフィギュレーションを行う必要があります。
Windchill 認証の必要条件
Windchill を SSL 用に設定する必要があります。
ThingWorx を SSL 用に設定する必要があります。
Windchill 認証を使用するための作業指示構築ブロックおよび ThingWorx の設定
作業指示構築ブロックおよび ThingWorx を設定し、認証のために Windchill を使用するには、次の手順を完了します。
1. ThingWorx Java インスタンスが Windchill サーバーの証明書を認識するようにします。ThingWorx によって使用される Java キーストアに (ルート) 証明書をインポートします。
2. EnableSSOThingWorxplatform-settings.json ファイルに表示されている場合は、false に設定してから、ThingWorx サーバーを再起動します。そうでない場合は、手順 3 に進んでください。
3. ThingWorx に、CustomHeadersDataShape という名前の新しいデータシェイプを作成します。「フィールド定義」で、「ベースタイプ」「String」である次の 2 つのフィールド定義を作成します。
Accept-Language
Authorization
4. サービスをオーバーライドするなどのカスタマイズは複製に対して行う必要があるため、コンフィギュレーション用に PTC.SCA.SCO.MPMLink_ODataConnector Thing の複製を作成します。詳細については、MPMLink OData コネクタの設定および構築ブロックエンティティの複製を参照してください。
a. 「コンフィギュレーション」で、次の値を設定します。
「ジェネリックコネクタ接続の設定」で、「認証タイプ」として「なし」を選択します。
「CSRF 設定」で、「CSRF Get リクエストの相対 URL」/servlet/odata と入力します。
「HTTP コネクタ接続の設定」で、次のように設定します。
「ユーザー名」「パスワード」を空白のままにします。
「ベース URL」に、https://<Windchill ホスト名>:<ポート>/Windchill/sslClientAuth と入力します。ここで、<Windchill ホスト名><ポート> は、使用している Windchill システムに適切な値に置き換えます。
「相対 URL」に、/servlet/odata と入力します。
「接続 URL」に、/servlet/WindchillGW/wt.httpgw.HTTPServer/ping と入力します。
「保存」をクリックします。
b. 「サービス」で、GetCustomHeaderParameters サービスをオーバーライドします。サービスに次のコードを追加します。
var Language = Resources["CurrentSessionInfo"].GetCurrentUserLanguage();
var params = {
infoTableName: "InfoTable",
dataShapeName: "CustomHeadersDataShape"
};
var result = Resources["InfoTableFunctions"].CreateInfoTableFromDataShape(params);
params = {
tableName: "GenericConnectorConnectionSettings" /* STRING */
};
var configTable = me.GetConfigurationTable(params);
var row = configTable.getRow(0);
var authType = row.getStringValue("AuthenticationType");
if ("None".equals(authType)) {
var CurrentUser = Resources["CurrentSessionInfo"].GetCurrentUser();
var baseEncodedStr = base64EncodeString(CurrentUser + ':');
var authHeaderValue = "Basic " + baseEncodedStr;
row = {
"Accept-Language": Language,
"Authorization": authHeaderValue
};
} else {
row = {
"Accept-Language": Language
};
}
result.AddRow(row);
c. 「完了」をクリックします。
d. 「保存」をクリックします。
5. PTC.SCA.SCO.MPMLinkWorkDefinitionConverter Thing を編集用に開きます。「コネクタ」フィールドが、手順 4 で設定した複製コネクタを参照していることを確認します。
6. PTC.SCA.SCO.OperatorAdvisorContentProxyMediaEntity Thing を編集用に開きます。「コンフィギュレーション」で、次の値を設定します。
「コンテンツソース接続情報」で、次のように設定します。
「ダイナミックコンテンツ」チェックボックスをオンにします。
「URL」に、https://<Windchill ホスト名>:<ポート> と入力します。ここで、<Windchill ホスト名><ポート> は、使用している Windchill システムに適切な値に置き換えます。
「SSL エラーを無視」チェックボックスをオンにします。
「認証タイプ」に、「セッションユーザー」を選択します。
「ユーザー名」「パスワード」を空白のままにします。
「テスト接続 URL」に、https://<Windchill ホスト名>:<ポート>/Windchill/sslClientAuth/servlet/odata と入力します。ここで、<Windchill ホスト名><ポート> は、使用している Windchill システムに適切な値に置き換えます。
「SSL 接続コンフィギュレーション」で、次の値を設定します。
「SSL キーストアのパス」に、ThingWorx キーストアへのパスを入力します。
「SSL キーストアのパスワード」に、ThingWorx キーストアのパスワードを入力します。
「SSL 信頼ストアのパス」に、信頼ストアへのパスを入力します。
「SSL 信頼ストアのパスワード」に、信頼ストアのパスワードを入力します。
「セッションユーザーのコンフィギュレーション」「セッションユーザーのクエリーパラメータ」で、「wt.effectiveUid」と入力します。
7. 「保存」をクリックします。
8. Integration Runtime を設定します。詳細については、Integration Runtime の設定を参照してください。
9. ThingWorx のコンフィギュレーションをテストします。
a. 手順 4 から PTC.SCA.SCO.MPMlink_ODataConnector Thing に移動します。
b. 「サービス」で、ValidateConnection サービスを実行します。次の結果によって、接続に成功したことが確認できます。
ValidateConnection サービスの出力。
PTC ID プロバイダ認証システムの設定
* 
PTC ID プロバイダ認証システムを設定する前に、最新の ptc-windchill-extension-[リリースバージョン] 拡張機能が ThingWorx にインポートされていることを確認してください。最新の拡張機能にアクセスするには、次の操作を実行します。
1. PTC-Windchill-Extension-for-ThingWorx ファイルのコンテンツをダウンロードして解凍します。ダウンロードを検索するには、「PTC ソフトウェアのダウンロード」ページに移動し、次のようにフォルダを展開します: 「PTC Smart Connected Applications」 > 「Release APPs」 > 「PTC Windchill Extension for ThingWorx」
2. ptc-windchill-extension-<バージョン>.zip ファイルを開き、ptc-thingview-extension.zip ファイルを削除します。最新バージョンの ptc-thingview-extension.zip が、作業指示構築ブロックの一部として、すでにインポートされています。
3. ptc-windchill-extension-<バージョン>.zip ファイルをインポートします。
PTC ID プロバイダ認証システムを設定するには、次の手順を実行します。
1. ThingWorx Composer で、ナビゲーション枠の「セキュリティ」 > 「認証システム」に移動します。
2. ptc-identity-provider-authenticator を開きます。
3. 「一般情報」で、次のように設定します。
「有効」チェックボックスをオンにします。
「優先度」に、適切な値を入力します。デフォルトでは、この値は 1 で、この認証システムが最初に実行する認証システムであることを示しています。複数の認証システムによるチェックを実装する場合は、「優先度」の値が重要になります。優先度が 1 の認証システムが失敗した場合、次の認証システムが認証チェックを実行し、その後、同様に続きます。
4. 「コンフィギュレーション」で、次のように設定します。
「認証システムのコンフィギュレーション」では、CreateUserDynamicallyHomeMashup の 2 つのオプションを設定できます。
CreateUserDynamically - このオプションを選択した場合、ユーザーがまだ存在しておらず、ユーザーが Windchill によって認証されている場合、認証システムはユーザーを ThingWorx に自動的に作成します。このチェックボックスがオフになっている場合でも、ブラウザは認証のために Windchill に転送されますが、ユーザーが ThingWorx に存在しない場合は ThingWorx を開くことができません。
HomeMashup - 新しく作成したユーザーにホームマッシュアップを割り当てます。ホームマッシュアップが指定されていない場合、ThingWorxThingWorx サーチページにブラウザを転送します。
User Configuration」で、UserGroup を追加します。これは、動的に作成された ThingWorx ユーザーが自動的に追加されるユーザーグループです。作業指示構築ブロックのエンティティとサービスへのアクセスを提供しているユーザーグループを選択します。
5. 「保存」をクリックします。
Tomcat コンフィギュレーションへのサーブレットフィルタの追加
Windchill アイデンティティプロバイダ認証フィルタは、認証されていない ThingWorx ユーザーを Windchill ログインフォームにリダイレクトして認証するために使用されます。認証に成功すると、ThingWorx アプリケーションはキーとユーザー名を受け取ります。
ThingWorx 側のフィルタは、ThingWorx Tomcat インストールディレクトリにある web.xml ファイルで設定されています。
1. Tomcat と Integration Runtime を停止します。
2. 以前にダウンロードした PTC-Windchill-Extension-for-ThingWorx ファイルを開き、ptc-identity-provider-authentication-filter-<バージョン>.jar ファイルを idp ディレクトリから ThingWorx Tomcat インストールの WEB-INF/lib ディレクトリにコピーします。
3. <ThingWorx Tomcat>\webapps\Thingworx\WEB-INF\web.xml ファイルに移動します。
4. web.xml ファイルのコピーを作成し、既知の場所に保存します。
5. <ThingWorx Tomcat>\webapps\Thingworx\WEB-INF\web.xml ファイルを、以前にダウンロードした PTC-Windchill-Extension-for-ThingWorx ファイルの \idp\twx-8.x.x ディレクトリからの web.xml ファイルで置き換えます。
6. その web.xml ファイルを開き、Windchill サーバーの詳細を、IdentityProviderAuthenticationFilter および IdentityProviderKeyValidatorFilter エントリに次のフォーマットで追加します。
[http or https]://[Windchill-host]:[Windchill-port]/[Windchill WebApp name]
[Windchill WebApp name] は、<Windchill>\codebase\wt.propertieswt.webapp.name をサーチすることによって見つけることができます。
7. Tomcat と Integration Runtime を起動します。
その他の Windchill コンフィギュレーション
1. ca-bundle.crt ファイルを <HTTP サーバーホーム>\conf\ に作成します。
2. ca-bundle.crt ファイルを編集します。
Windchill サーバー SSL 証明書のコンテンツを追加します。
ThingWorx SSL 証明書のコンテンツを追加します。
* 
Windchill がサードパーティの SSL チェーン証明書を使用して設定されている場合は、Windchill および ThingWorx の証明書のコンテンツを、次の順序で ca-bundle.crt に追加またはコピーします。
a. Windchill ルート証明書
b. Windchill 中間証明書
c. Windchill サーバー証明書
d. ThingWorx 証明書
3. ca-bundle.crt ファイルを保存します。
4. <HTTP サーバーホーム>\conf\sslvhostconf.d で、sslclientauth.conf ファイルを作成します。
5. sslclientauth.conf を編集して次の行を追加します。
SSLCACertificateFile <パス>\ca-bundle.crt
<パス>ca-bundle.crt ファイルのファイルパスに置き換えます。
6. sslclientauth.conf ファイルを保存します。
7. <HTTP サーバーホーム>\conf\conf.d\20-mod_ssl.conf ファイルを編集します。
以下を含む行のコメントを解除します (行の先頭にあるハッシュ文字 (#) を除去します)。
SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire
以下を含む行のコメントを解除します。
SSLVerifyDepth
8. 20-mod_ssl.conf ファイルを保存します。
9. <HTTP サーバーホーム>\conf\httpd.conf ファイルを編集します。次の行がコメントになっていないことを確認します (これらの行の先頭にある任意のハッシュ文字 (#) を除去します)。
LoadModule log_config_module modules/mod_log_config.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule ssl_module modules/mod_ssl.so
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
10. httpd.conf ファイルを保存します。
11. <HTTP サーバーホーム>\conf\conf.d\30-app-Windchill-Auth.conf ファイルを開きます。次のようなエントリ sslClientAuth が存在することを確認します。
# SSL client certificate authenticated resources
<IfModule ssl_module>
<LocationMatch ^/+Windchill/+sslClientAuth(;.*)?>
Require all granted
SSLVerifyClient require
SSLOptions +ExportCertData
</LocationMatch>
</IfModule>
12. SSL をアクティブ化する -DSSL オプションを使用して PTC HTTP サーバーを再起動します。
13. <Windchill>\codebase\WEB-INF\web.xml ファイルを編集します。
a. <filter-name>TrustedSSLAuthFilter</filter-name> を検索します。
b. 既存の後に新しい init-param を追加します。
<init-param>
<param-name>trustedSubjectPattern.1</param-name>
<param-value>.*[hostname].* </param-value>
</init-param>
[hostname] の証明書の対象からのホスト名を使用します。たとえば、対象が CN=mycompany.domain.com の場合は、mycompany[hostname] に使用します。
14. web.xml ファイルを保存します。
15. Windchill を再起動します。
コンフィギュレーションを確認します。
WindchillThingWorx の両方で、管理者ユーザーの名前が一致する必要があります。次のオプションを考慮してください。
Windchill で変更を行わなかった場合、Windchill のインストール時に、Administrator という名前の管理者ユーザーが作成されました。設定済みの ThingWorx システムを使用して、そのユーザーとして認証し、ThingWorx の管理者ユーザーとしてフルアクセス権を持つことができます。
Windchill を修正したために Administrator という名前のユーザーが存在しない場合は、WindchillThingWorx の両方に共通のユーザー名を決定し、そのユーザーを ThingWorx の「管理者」ユーザーグループに追加する必要があります。
Windchill 認証のコンフィギュレーションを確認するには、ThingWorx の URL でブラウザを開きます。ブラウザは認証のために Windchill に転送されます。Administrator (または ThingWorx の管理者として設定された別のユーザー) に Windchill 資格証明を指定します。ブラウザは ThingWorx Composer に再度転送されます。ThingWorx で、そのユーザーとして実行していることを確認します。これにより、ThingWorxWindchill 認証で適切に設定されていることが確認されます。
認証システムがユーザーを自動的に作成するように選択した場合は、次のようにテストします。検証するには、ブラウザを ThingWorx URL で開きます。認証のために Windchill に再度転送されます。ThingWorx に存在しないユーザーの Windchill 資格証明を指定します。ブラウザは、ThingWorx の動的に作成されたユーザーのホームマッシュアップとして指定されたページに再度転送されます。ThingWorx で、そのユーザーとして実行していることを確認します。
これは役に立ちましたか?