針對工作階段使用者配置工作指示建構區塊 (Windchill 驗證)
「工作階段使用者」驗證選項使用 Windchill 來驗證 ThingWorx。使用者存取 ThingWorx 時,會被路由到 Windchill 進行驗證。驗證完成後,使用者會被路由回 ThingWorx。此組態要求 WindchillThingWorx 中的使用者相同。
ThingWorx 包含一個組態選項,該選項會在 ThingWorx 中自動建立經過 Windchill 驗證的使用者。如果未選取此組態選項,則使用者必須同時獨立存在於 WindchillThingWorx 中。ThingWorx 使用者必須新增至適當的 ThingWorx 使用者群組後才能擁有工作指示建構區塊實體和服務的存取權。如果您選取在 ThingWorx 中自動建立使用者這一選項,則可以指定要將使用者自動新增至的使用者群組。
如需配置工作指示建構區塊以使用「工作階段使用者」驗證選項,需要 WindchillThingWorx 與工作指示建構區塊中的組態。
Windchill 驗證的先決條件
必須將 Windchill 配置為使用 SSL。
必須將 ThingWorx 配置為使用 SSL。
配置工作指示建構區塊與 ThingWorx 以使用 Windchill 驗證
完成下列步驟來配置工作指示建構區塊與 ThingWorx,以使用 Windchill 進行驗證:
1. ThingWorx Java 實例識別 Windchill 伺服器的憑證。將 (根) 憑證匯入到 ThingWorx 所使用的 Java 金鑰庫。
2. 如果 EnableSSO 顯示在 ThingWorxplatform-settings.json 檔案中,則將其設定為 false,並重新啟動 ThingWorx 伺服器。否則繼續執行步驟 3。
3. ThingWorx 中建立一個名為 CustomHeadersDataShape 的新資料形式。在「欄位定義」下,建立下列兩個欄位定義,其中「基礎類型」=「字串」
Accept-Language
Authorization
4. 針對您的組態建立 PTC.SCA.SCO.MPMLink_ODataConnector 物件的複本,因為必須對複本執行自訂,例如取代服務。如需詳細資訊,請參閱配置 MPMLink OData 連接器複製建構區塊實體
a. 「組態」下,設定下列值:
「泛用連接器連線設定」下,選取「無」作為「驗證類型」
「CSRF 設定」下,輸入 /servlet/odata 作為「CSRF GET 請求的相對 URL」
「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 物件進行編輯。確保「連接器」欄位參考您在步驟 4 中設定的重複連接器。
6. 開啟 PTC.SCA.SCO.OperatorAdvisorContentProxyMediaEntity 物件進行編輯。在「組態」下,設定下列值:
「內容來源連接資訊」下:
選取「動態內容」核取方塊
針對 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 物件。
b. 「服務」下,執行 ValidateConnection 服務。下列結果確認連線成功:
ValidateConnection 服務的輸出。
配置 PTC Identity Provider Authenticator
* 
在配置 PTC Identity Provider Authenticator 前,確保已將最新的 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 Identity Provider Authenticator,請完成下列步驟:
1. ThingWorx Composer 的導覽窗格中,導覽至「安全性」 > 「驗證器」
2. 開啟 ptc-identity-provider-authenticator
3. 「一般資訊」下:
選取「已啟用」核取方塊。
針對「優先性」,輸入適當的值。依預設,值為 1,指示此驗證器是第一個要執行的驗證器。如果想要透過多個驗證器實行檢查,那麼「優先性」值很重要。如果優先性為 1 的驗證器失敗,則由下一個驗證器執行驗證檢查,依此類推。
4. 「組態」下:
「驗證器組態」下,有兩個待配置選項:CreateUserDynamicallyHomeMashup
CreateUserDynamically - 選取此選項後,如果使用者尚不存在,但使用者已經過 Windchill 驗證,則驗證器會在 ThingWorx 中自動建立使用者。即使未選取此核取方塊,瀏覽器仍會路由到 Windchill 以進行驗證,但如果使用者也不存在於 ThingWorx 中,則將無法開啟 ThingWorx
HomeMashup - 將主混搭指派給新建立的使用者。如果未指定主混搭,則 ThingWorx 會將瀏覽器路由至 ThingWorx 搜尋頁。
User Configuration 下,新增 UserGroup。動態建立的 ThingWorx 使用者會自動新增至此使用者群組。選取為工作指示建構區塊實體與服務提供存取權的使用者群組。
5. 按一下「儲存」
向 Tomcat 組態新增 Servlet 篩選器
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. 使用先前下載的 PTC-Windchill-Extension-for-ThingWorx 檔案之 \idp\twx-8.x.x 目錄中的 web.xml 檔案取代 <ThingWorx Tomcat>\webapps\Thingworx\WEB-INF\web.xml 檔案。
6. 開啟該 web.xml 檔案,並將 Windchill 伺服器詳細資訊以下列格式新增至 IdentityProviderAuthenticationFilterIdentityProviderKeyValidatorFilter 項目:
[http or https]://[Windchill-host]:[Windchill-port]/[Windchill WebApp name]
可透過在 <Windchill>\codebase\wt.properties 中搜尋 wt.webapp.name 找到 [Windchill WebApp 名稱]
7. 啟動 Tomcat 與 Integration Runtime。
其他 Windchill 組態
1. <HTTPSERVER_HOME>\conf\ 中建立 ca-bundle.crt 檔案。
2. 編輯 ca-bundle.crt 檔案:
附加 Windchill 伺服器 SSL 憑證的內容
附加 ThingWorx SSL 憑證的內容
* 
如果 Windchill 使用協力廠商 SSL 鏈結憑證進行配置,則將 WindchillThingWorx 憑證的內容以下列順序附加或複製到 ca-bundle.crt
a. Windchill 根憑證
b. Windchill 中繼憑證
c. Windchill 伺服器憑證
d. ThingWorx 憑證
3. 儲存 ca-bundle.crt 檔案。
4. <HTTPSERVER_HOME>\conf\sslvhostconf.d 中建立 sslclientauth.conf 檔案。
5. 編輯 sslclientauth.conf 以新增下列行:
SSLCACertificateFile <PATH_TO>\ca-bundle.crt
<PATH_TO> 取代為 ca-bundle.crt 檔案的檔案路徑。
6. 儲存 sslclientauth.conf 檔案。
7. 編輯 <HTTPSERVER_HOME>\conf\conf.d\20-mod_ssl.conf 檔案:
為包含下列項目的行取消註解 (移除行開頭的雜湊字元 (#)):
SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire
為包含下列項目的行取消註解:
SSLVerifyDepth
8. 儲存 20-mod_ssl.conf 檔案。
9. 編輯 <HTTPSERVER_HOME>\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. 開啟 <HTTPSERVER_HOME>\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. 使用 -DSSL 選項來啟動 SSL 來重新啟動 PTC HTTP 伺服器。
13. 編輯 <Windchill>\codebase\WEB-INF\web.xml 檔案。
a. 找出 <filter-name>TrustedSSLAuthFilter</filter-name>
b. 在現有
<init-param>
<param-name>trustedSubjectPattern.1</param-name>
<param-value>.*[hostname].* </param-value>
</init-param>
之後新增一個新的 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 中執行。此舉可核對是否已透過 Windchill 驗證對 ThingWorx 進行了正確配置。
如果您已選取讓驗證器自動建立使用者,則接下來需要測試此動作。欲進行核對,請開啟瀏覽器並轉至 ThingWorx URL。您會被重新路由至 Windchill 以進行驗證。針對 ThingWorx 中不存在的使用者,提供 Windchill 認證。瀏覽器會被路由回 ThingWorx 中已指定為動態建立之使用者主混搭的頁面。請核對您現在是否在以該使用者身分於 ThingWorx 中執行。
這是否有幫助?