應用程式金鑰
應用程式金鑰是 ThingWorx 資料庫中的加密安全性權杖,可用來在不使用標準認證的情況下登入 ThingWorx 應用程式。
您可以在請求 URL 中的標題上傳遞應用程式金鑰權杖。系統會使用與應用程式金鑰相關聯之使用者的安全性前後關聯來執行該請求。依預設,使用應用程式金鑰發出請求時並不會建立工作階段。我們建議其他系統和應用程式也以這種方式向 ThingWorx 應用程式發出請求。不過,如果想要建立工作階段,除了傳入應用程式金鑰權杖之外還可以使用下列查詢參數:x-thingworx-session=true
在透過 URL 檢視混搭及使用應用程式金鑰時,請藉由新增 x-thingworx-session=true 來建立工作階段。若沒有工作階段,後續請求都需要使用標準 HTTP 基本驗證器進行驗證。請在 x-thingworx-session=true 查詢參數之後包括 #mashup=[your mashup name]
* 
建立權限並指派權限至應用程式金鑰時,請務必使用最低權限的安全性概念。將「管理員」群組成員指派至應用程式金鑰並不是最佳作法。如果您嘗試以擁有「管理員」權限的使用者為基礎建立應用程式金鑰,會顯示一則警告。
應用程式金鑰內容
屬性名稱
描述
名稱
識別此金鑰的字或片語。必填欄位。
虛擬人偶
可進行上載來以視覺化方式表示應用程式金鑰的圖像。
描述
應用程式金鑰的描述。
專案
與此金鑰關聯的工作或群組。
標籤
您可以用來為應用程式金鑰分組或分類的模型標籤。
IP 白名單
允許使用應用程式金鑰存取 ThingWorx 的 IP 清單。以逗號分隔 IP。若保留空白,任意 IP 均可使用應用程式金鑰。
用戶端名稱
可以表示任何內容 (例如與應用程式金鑰或 IP 位址關聯的用戶端) 的使用者可定義的欄位。ThingWorx 會忽視指派給此欄位的任何值。
使用者名稱參考
與應用程式金鑰相關聯的使用者名稱。必填欄位。
金鑰 ID
ThingWorx 產生的金鑰值。無法編輯該金鑰 ID。
* 
金鑰 ID 會以加密形式儲存在資料庫中。用來加密值的對稱金鑰儲存在 /ThingworxStorage/keystore.jks 中,而金鑰倉庫的密碼則儲存在 /ThingworxPlatform/keystore-password 中。若這些檔案不存在,系統將會產生。若對稱金鑰不存在,則會在系統啟動前建立一個。如果您要安裝並維護 ThingWorx 伺服器,請務必保留這些檔案。若檔案遺失,應用程式金鑰不會工作,即表示無法在系統啟動期間加密值,並且無法繼續儲存或驗證現有的應用程式金鑰。
到期日
應用程式金鑰的到期日。若未指定到期日,則會使用 使用者管理子系統中的預設值。針對 ThingWorx 8.1 及更新版本,如果未指定到期日,或未變更使用者管理子系統中的「應用程式金鑰生命週期 (以秒計)」 值,應用程式金鑰會在建立後的 24 小時後到期。
上次修改日期
上次修改應用程式金鑰的日期和時間。
主混搭
與應用程式金鑰相關聯的預設混搭。
文件集
描述如何或為何在環境中使用此文件集之選用的註記或背景資訊。
建立應用程式金鑰
請遵循下列步驟來建立應用程式金鑰。所建立的金鑰會採用授予「使用者名稱參考」欄位中相關聯使用者的安全性設定。
1. ThingWorx Composer 中,按一下「新建」
2. 向下捲動,然後選取「應用程式金鑰」
3. 鍵入「名稱」
4. 若需要,請選取或輸入此金鑰的「描述」「專案」「標籤」
5. 「使用者名稱參考」欄位中,選取與應用程式金鑰相關聯的使用者。
6. 填充任何選用的所需欄位,包括「IP 白名單」「用戶端名稱」「主混搭」「虛擬人偶」「到期日」「文件集」
* 
若未設定「到期日」,系統會以應用程式金鑰實體的建立日期與使用者管理子系統中的「應用程式金鑰生命週期 (以秒計)」設定相加的結果來計算值。
7. 按一下「儲存」
8. 應用程式金鑰會顯示在「金鑰 ID」欄位中。
刪除應用程式金鑰
雖然可為應用程式金鑰指定到期日,但它們在到期時並不會自動刪除。您可以寫入 ThingWorx 應用程式邏輯來定期逐一版序化並刪除已到期的應用程式金鑰。請參閱 應用程式金鑰服務。欲手動刪除應用程式金鑰:
1. 在 Composer 中,瀏覽「全部」。
2. 向下捲動至「安全性」部份。
3. 如有必要,展開該部份,並找出「應用程式金鑰」
4. 在名稱左側的核取方塊中按一下,選取一個應用程式金鑰。
5. 按一下「刪除」按鈕。
透過服務建立應用程式金鑰
欲透過服務建立應用程式金鑰,請使用下列範例:
var params = {
clientName: undefined /* STRING */,
name: undefined /* STRING */,
description: undefined /* STRING */,
project: undefined /* STRING */,
whitelist: undefined /* STRING */,
user: undefined /* USERNAME */,
tags: undefined /* TAGS */,
expirationDate: undefined /* DATETIME */
};
// no return
Resources["EntityServices"].CreateApplicationKey(params);
//Get the generated Key's actual appKey value
var KeyID = ApplicationKeys["YOURKEYNAME"].GetKeyID();
* 
若未設定「到期日」,系統會以應用程式金鑰實體的建立日期與使用者管理子系統中的「應用程式金鑰生命週期 (以秒計)」設定相加的結果來計算值。
初始應用程式金鑰設定與首次連線最佳作法
應在開發沙箱中始終保持裝置在線上或在開發沙箱中盡可能模擬裝置。裝置準備進行生產後,應為將在應用程式 Edge 網路上的每個裝置建立新的應用程式金鑰。建立具唯一性的應用程式金鑰並將其部署到相關裝置之後,應在裝置進行初始化以核對其是否已成功連接至平台時對該裝置進行監視。
應用程式金鑰到期與輪替
一種最佳作法是,應用程式金鑰應擁有有限的到期日,該到期日與會耗用應用程式金鑰認證之裝置的預期生命週期相符。此外,不建議將相同的應用程式金鑰用於多個裝置,特別是當其生命週期不同時。應用程式金鑰到期後,應在裝置上安裝新的應用程式金鑰。
重要應用程式的應用程式金鑰有效期限
如果沒有將新應用程式金鑰遞送至裝置的系統,則可以更新應用程式金鑰上的有效期限金鑰以允許延伸服務生命。這不是建議的最佳做法,但可在商業重要資料可能遺失時作為因應措施使用。請務必注意,如果將應用程式金鑰生命週期延伸至超出裝置的預期生命週期,則可能會為重要應用程式基礎結構引入安全威脅。
相關連結