Composer 中的 ThingWorx 模型定義 > 安全性 > 目錄服務 > 管理 Active Directory 中的使用者
管理 Active Directory 中的使用者
如果使用者已存在於 Microsoft Active Directory (AD) 目錄服務中,您可以在 ThingWorx 中管理使用者與使用者群組。ThingWorx 允許將 Active Directory 使用者群組對應至 ThingWorx 使用者群組。使用者授權選項可讓您建立、修改或刪除使用者。可在 ThingWorx 中針對每個使用者群組管理權限。
* 
依預設,在 ThingWorx 中不會啟用 Active Directory 功能。ThingWorx 管理員使用者必須先啟用 Active Directory,才能用它在 ThingWorx 中進行驗證。
本主題提供下列資訊:
入門
入門
開始使用之前,請先將包含實體的 XML 檔案匯入 ThingWorx,以在 ThingWorx 中建立目錄服務。匯入檔案之後,您即可在 ThingWorx 中配置目錄服務。使用 XML 檔案時,請遵循下列規則:
XML 檔案必須包含將 com.thingworx.security.directoryservices.ActiveDirectoryDirectoryService Java 類別作為 DirectoryService 元素的 className 屬性使用的一或多項目錄服務。
針對每個 DirectoryService 元素,必須為 name 提供唯一值。
name 值在 ThingWorx 執行時間內存在的所有目錄服務之間也必須具唯一性。
priority 屬性應具有用於驗證的唯一優先順序編號。此外,應將具唯一性的優先順序新增至檔案以及 ThingWorx 執行時間裡的每項目錄服務。此優先順序對應於 ThingWorx 在認證驗證期間應該用來查閱目錄服務的順序。
* 
目錄服務會以所連結的優先順序進行驗證。如果具有最低優先順序設定 (在下面的範例中為 1) 的目錄服務無法進行某次使用者驗證,那麼該鏈將會嘗試針對鏈中優先順序高一級的目錄服務來驗證使用者。請參見下列範例。
XML 範例:單一目錄服務
在以下範例中,包括在 ThingWorx 中匯入新目錄服務所需的最低限度組態 xml 檔案。
* 
以下範例適用於管理員使用者。

<Entities>
<DirectoryServices>
<DirectoryService
className="com.thingworx.security.directoryservices.ActiveDirectoryDirectoryService"
description="Active Directory Directory Services"
documentationContent="" enabled="false" homeMashup=""
lastModifiedDate="" name="ADDS1" priority="1" projectName=""
tags="">
<Owner name="Administrator" type="User" />
<avatar />
<DesignTimePermissions>
<Create />
<Read />
<Update />
<Delete />
<Metadata />
</DesignTimePermissions>
<RunTimePermissions />
<VisibilityPermissions>
<Visibility />
</VisibilityPermissions>
<ConfigurationTables/>
<ConfigurationChanges />
</DirectoryService>
</DirectoryServices>
</Entities>

XML 範例:兩項目錄服務
在以下範例中有兩項目錄服務。priority 屬性在每個 DirectoryService 中定義。
<Entities>
<DirectoryServices>
<DirectoryService
className="com.thingworx.security.directoryservices.ActiveDirectoryDirectoryService"
description="Active Directory Directory Services"
documentationContent="" enabled="false" homeMashup=""
lastModifiedDate="" name="ADDS1" priority="1" projectName=""
tags="">
<Owner name="Administrator" type="User" />
<avatar />
<DesignTimePermissions>
<Create />
<Read />
<Update />
<Delete />
<Metadata />
</DesignTimePermissions>
<RunTimePermissions />
<VisibilityPermissions>
<Visibility />
</VisibilityPermissions>
<ConfigurationTables/>
<ConfigurationChanges />
</DirectoryService>
<DirectoryService
className="com.thingworx.security.directoryservices.ActiveDirectoryDirectoryService"
description="Active Directory Directory Services"
documentationContent="" enabled="false" homeMashup=""
lastModifiedDate="" name="ADDS2" priority="2" projectName=""
tags="">
<Owner name="Administrator" type="User" />
<avatar />
<DesignTimePermissions>
<Create />
<Read />
<Update />
<Delete />
<Metadata />
</DesignTimePermissions>
<RunTimePermissions />
<VisibilityPermissions>
<Visibility />
</VisibilityPermissions>
<ConfigurationTables/>
<ConfigurationChanges />
</DirectoryService>
</DirectoryServices>
</Entities>
目錄服務的組態
當您針對 Active Directory 目錄服務匯入 XML 檔案之後,您必須對其進行配置。欲存取 ThingWorx Composer 中的組態頁:
1. 「瀏覽」導覽面板中,展開「安全性」,並選取「目錄服務」
2. 在目錄服務頁中,按一下 Active Directory 目錄服務的名稱。目錄服務的「一般資訊」頁隨即顯示。
3. 選取「已啟用」核取方塊來啟用此目錄服務,並按一下「儲存」
4. 選取「組態」以顯示組態頁。您已準備好配置目錄服務。
* 
本部份與後續部份描述的組態選項全都顯示在目錄服務實體的組態頁中。如需組態錯誤訊息的協助,請參閱 組態錯誤訊息
對使用者在登入 ThingWorx 期間所輸入內容進行的認證驗證,可透過在 User Base Distinguished Name 組態表設定中查詢使用者物件及關於該物件的密碼來執行。有兩個位置可指定 Active Directory 實體的網域,而且這兩個位置可彼此完全獨立。Domain Distinguished Name 會在群組查詢期間使用,因此,如果您要利用群組對應功能,請核對使用者所在全部群組是否屬於指定的 Domain Distinguished Name 值。User Base Distinguished Name 是藉由在 ThingWorx 登入期間提供的使用者名稱與密碼,在 Active Directory 中查詢使用者物件時使用的位置。
* 
配置多個目錄服務物件時,請勿與 Active Directory 結構內的使用者搜尋庫重疊。
連線設定
從 v.8.3.5 開始,Active Directory 組態的連線設定部份包括「動態使用者登入」選項。以下是版本修訂頁:
下表描述目錄服務的「連線設定」。所有連線設定欄位均為必填。
名稱
描述
XML 屬性名稱
預設值
值範例
URI 配置
用於指定在與 Active Directory 伺服器通訊時使用之相關聯通訊協定的字串。
通訊協定
LDAP
LDAP
伺服器 FQDN 或 IP 位址
目錄查詢的目標伺服器名稱/位址。
server
localhost
localhost、domainserver.acme.com、127.0.0.1
伺服器網路連接埠
目錄查詢的目標伺服器連接埠。
389
389, 369, 10389
網域辨別名稱
使用者群組查詢期間所使用的頂層目錄之辨別名稱。
網域
n/a
DC=test、DC=acme、DC=com
動態使用者登入
決定是否已啟用「動態使用者登入」。如需詳細資訊,請參閱接下來一部份。
dynamicUserLogin
核取方塊為空 (已禁用)。
核取方塊已選取。
管理主體名稱
已指定對網域物件具有管理讀取存取權之使用者的名稱。此名稱的值取決於在「結構對應」組態表中指定的 User Id Attribute
adminPrincipal
n/a
AcmeAdmin
管理密碼
在連線設定組態表中指定之管理主體名稱的密碼。
adminPassword
n/a
AcmePassword
動態使用者登入
* 
建議啟用「動態使用者登入」時,使用者使用相同使用者名稱向 ThingWorx Platform 驗證。否則,由於 ThingWorx 平台目前的限制,會針對相同使用者建立多個 ThingWorx Platform 帳戶。例如,假設使用者使用其 displayName testuser 登入。使用者帳戶會建立在名為 testuser 的平台上。但是,如果同一位使用者使用其通用主體名稱 (UPN) (在本例中為 testuser@domain.com) 登入,則也會在平台上建立使用者 testuser@domain.com
如果啟用「動態使用者登入」,則會略過「管理主體名稱」與「管理主體密碼」的連線設定。登入 ThingWorx Platform 目錄的使用者會在 Active Directory 中使用其使用者名稱與密碼進行驗證。Active Directory 中目前支援的驗證方法是使用 displayName、UPN 與 domain\samAccountName。
如果禁用「動態使用者登入」,使用者登入的工作流程會保持與其在 ThingWorx Platform 8.3.0 至 8.3.4 時相同。
群組對應
確保您瞭解適用於使用者和群組的 ThingWorx 可見度權限組織規則,以按照預期配置對應。如果未正確指派權限,使用者可以存取他們本來無法存取的內容。
雖然不需要群組對應,但在授權或更新某個使用者時,沒有任何群組對應的情況會導致權限受限 (只會有該使用者具備的預設權限)。
「群組對應」組態位於 Active Directory 目錄服務的組態頁中下方附近。欲設定群組對應:
1. 在 ThingWorx Composer 中,請導覽至 Composer 中的 Active Directory 目錄服務 (「安全性」 > 「目錄服務」 > <Active Directory 服務名稱>
2. 開啟組態頁,向下捲動至「群組對應」部份,並按一下「新增」,如下圖所示:
3. 在「群組對應」視窗的「Active Directory 群組名稱」欄位中,鍵入您要對應至 ThingWorx 群組之 Active Directory 群組的名稱。
4. 在「ThingWorx 群組名稱」欄位中,按一下 + 號以顯示 ThingWorx 群組的下拉清單,如下所示。請注意,此處提供「進階搜尋」,您可以按特定實體與其他項目篩選。此下拉清單自 ThingWorx v.8.3.5 開始提供。
* 
禁用「動態使用者登入」時,會顯示下列「群組對應」表單。
5. 請注意,在「群組對應」表單的下列版本中,當啟用「動態群組登入」時會顯示「所需認證」訊息。欲輸入「Active Directory 群組名稱」,請按一下綠色鎖定圖示。
6. 「提供認證」對話方塊出現時,設定 AdministrativePrincipalNameAdministrativePassword,然後按一下「設定」
下表描述群組對應的設定:
群組對應
名稱
描述
有效值
Active Directory 群組名稱
在執行時間關聯/對應至 ThingWorx 群組進行權限/授權核對之 Active Directory 群組的名稱。
這個非空白的字串包含在所配置網域下對應於 Active Directory 中某個 groupObjectClass 物件的群組名稱。
ThingWorx 群組名稱
將包含在執行時間使用的 ThingWorx 權限/授權組態之 ThingWorx 群組的名稱。由 Active Directory 授權的使用者將會新增至這個 ThingWorx 群組。這會取決於使用者所屬且對應至這個 ThingWorx 群組的 Active Directory 群組。
這個非空白的字串包含對應於 ThingWorx 中某個群組實體的群組名稱。
使用動態使用者身份登入的群組對應
在 v.8.3.5 中新增「動態使用者登入」後,啟用「動態使用者登入」功能時,GetDomainGroupsIsValidGroup 服務會取用允許傳入 Active Directory 管理使用者認證的引數 (例如從 UI 傳入)。禁用「動態使用者登入」時 (依預設為禁用),管理使用者認證對 IsValidGroupGetDomainGroups 服務而言是選用的。TestConnection 服務可與所有必要的認證搭配使用。當參數是空時,服務會使用管理員認證。
群組對應的群組驗證
從 v.8.3.5 開始,ThingWorx Composer 在「群組對應」頁中提供一個文字方塊,可以讓您在其中輸入 Active Directory 群組的名稱。從下拉清單中選取 Active Directory 群組的選項仍然可用。文字方塊支援按名稱或完整辨別名稱輸入群組。例如,名稱 TestGroup 是簡單名稱,而 CN=TestGroup, CN=Users, DC=domain, DC=com 是完整辨別名稱。
從 v.8.3.5 開始也提供 IsValidGroup 服務,可讓您在 Active Directory 中搜尋有效群組的名稱。此服務採用單一的 STRING 參數 groupName,指定您要尋找的群組名稱。服務會傳回 BOOLEAN 結果,指示群組是否存在於 Active Directory 中。
* 
萬用字元 ("*") 不允許作為 groupName 輸入的一部份存在。
巢狀群組成員資格
從 v.8.3.5 開始,Active Directory 組態的「結構描述對應」部份中提供「將使用者新增至對應的上階群組」組態選項。此 BOOLEAN 設定可啟用或禁用巢狀群組成員資格。
如果啟用了巢狀群組成員資格,會發生下列情況:
會使用「可延伸比對」規則查詢 Active Directory,藉以將使用者所屬的群組以及這些群組所屬的群組擷取至任何巢狀深度。
這些群組會與「群組對應」表進行比較,以將產生的 ThingWorx 使用者指派給使用者群組。
此選項可能會導致造成效能影響,因為它會增加 Active Directory 的負載,並可能導致產生較大的結果集。
如果禁用巢狀群組成員資格,則工作流程會在存在於 ThingWorx Platform v.8.3.0 至 8.3.4 時保持不變。
結構對應
為了使驗證與群組擷取/對應能夠正常使用,本部份中的下列欄位為必填:「使用者 ID 屬性名稱」、「群組物件類別名稱」、「群組成員資格屬性名稱」、「群組屬性名稱」、「使用者旗標屬性名稱」、「使用者控制屬性的已停用位元」和「使用者控制屬性的反鎖位元」。
結構對應
名稱
描述
XML 屬性名稱
預設值
值範例
使用者 ID 屬性名稱
包含在登入 ThingWorx 時用來比對指定使用者名稱之使用者名稱值的屬性名稱。
attributeUserIdName
cn
cn、userPrincipleName
使用者基準辨別名稱
使用者認證驗證期間所使用的頂層目錄之辨別名稱。
userBaseDN
ou=people
DC=test、DC=acme、DC=com
群組物件類別名稱
表示物件為群組之 objectClass 屬性的值。將針對「群組對應」組態表中的 Active Directory/ThingWorx 群組對應查詢與呈現的群組物件。
groupObjectClass
group
group
用於篩選網域群組的群組 LDAP 篩選器
允許篩選大量網域群組。
* 
如果您有大量群組,則必須配置此參數 (請勿保留空白)。若保留空白,可能會影響到擷取大量群組時的效能。
groupLdapFilter
n/a
(cn=a_testgroup111*)(cn=b_testgroup222*)
群組成員資格屬性名稱
表示使用者或群組是另一個群組「的成員」之屬性的名稱。系統會針對 Active Directory 中使用者內的每個 memberOf 項目,將該使用者以成員身份新增至 ThingWorx 群組,且將該群組對應至在 memberOf 項目中指定的 Active Directory 群組。
memberOfAttribute
memberOf
memberOf
群組屬性名稱
應用來在 ThingWorx UI 中,尤其是在「群組對應」組態表選取項中擷取群組顯示名稱之屬性的名稱。
* 
使用 distinguishedName 在 Active Directory 中顯示群組位置的完整路徑。這可在群組存在於多個網域中時提供其所屬子網域的前後關聯。
groupAttribute
cn
cn
使用者旗標屬性名稱
userControlAttribute
userAccountControl
userAccountControl
使用者控制屬性的已停用位元
所指定使用者旗標屬性名稱 (亦即預設的 userControlAttribute) 內已停用位元旗標的整數/小數值。如需詳細資訊,請前往 https://msdn.microsoft.com/en-us/library/cc223145.aspx
userDisableBit
2
2
使用者控制屬性的反鎖位元
所指定使用者旗標屬性名稱 (亦即預設的 userControlAttribute) 內反鎖位元旗標的整數/小數值。如需詳細資訊,請前往 https://msdn.microsoft.com/en-us/library/cc223145.aspx
userLockoutBit
16
16
樹系名稱識別元
識別網域控制器集合/樹系。使用相同字串來配置的每個目錄服務物件將能夠在其「群組對應」組態內對應彼此網域中的群組。如需使用此選項的範例,請參閱接下來幾部份的內容。
forestNameIdentifier
n/a
使用者授權
使用者授權提供可在 ThingWorx 中自動建立、修改及刪除使用者的選項。
名稱
描述
XML 屬性名稱
預設值
註記
啟用使用者建立
當使用者認證在協助處理登入請求的 Active Directory 伺服器中正確無誤時,控制 ThingWorx 使用者的自動建立/授權。
若欄位已核取,便會以指定的登入使用者名稱以及在「使用者預設設定」組態表中指定的任何預設值來建立使用者。
如果欄位已取消核取/false (預設),使用者必須存在於 ThingWorx 中,才能嘗試登入。
使用者必須存在於 ThingWorx 中才能成功登入。如果使用者屬於「使用者授權排除清單」組態表,那麼此欄位對於自動建立使用者沒有影響。
userCreationEnabled
false
如果您希望 ThingWorx 中的目錄服務能夠自動建立使用者,請設定為 true
啟用使用者修改
當使用者認證在協助處理登入請求的 Active Directory 伺服器中正確無誤時,控制 ThingWorx 使用者的自動更新/授權。
若欄位已核取或為 true,則會在每次嘗試登入時更新使用者。系統會以在「使用者預設設定」組態表中指定的任何預設值來更新這些使用者。
若欄位未核取或為 false (預設),而且是自動建立/授權的使用者,那麼在使用者初次嘗試登入之後,不會在其每次嘗試登入時都更新使用者。使用者必須存在於 ThingWorx 中才能成功登入。
如果使用者屬於「使用者授權排除清單」組態表,那麼此欄位對於自動更新使用者沒有影響。
userModificationEnabled
false
設定為 true 以允許 ThingWorx 中的目錄服務更新使用者。
啟用使用者刪除
當使用者不存在於協助處理登入請求的 Active Directory 伺服器中時,控制 ThingWorx 使用者的自動刪除/取消授權。
若欄位已核取或為 true,則會在使用者嘗試登入時將其刪除。
若欄位未核取或為 false,則不會在使用者嘗試登入時將其刪除。使用者必須存在於 ThingWorx 中才能成功登入及成功刪除。如果使用者屬於「使用者授權排除清單」組態表,那麼此欄位對於自動刪除使用者沒有影響。
userDeletionEnabled
false
設定為 true 以允許 ThingWorx 中的目錄服務刪除使用者。
使用者預設設定
下表描述使用者的可用預設設定。這些欄位都是選用欄位。
名稱
描述
XML 屬性名稱
有效值
註記
所授權使用者的預設網域前置碼
假設為使用者名稱前綴的字串值,用以區分來自網域伺服器 Y 的使用者 X 和來自網域伺服器 Z 的使用者 X。
這讓經過配置的 Active Directory 目錄服務可明確知道要驗證的使用者是否為管理的目標。若有配置值,Active Directory 目錄服務不會嘗試驗證或授權使用者,而是會記錄安全性訊息並將使用者登入嘗試傳遞至鏈中的下一項 ThingWorx 目錄服務。
* 
如果相同使用者存在於若干網域伺服器和其網域中,則建議使用網域前綴。這樣可盡量減少因使用者驗證失敗時的連鎖效應所可能引發的不確定行為。
userDefaultDomainPrefix
空白字串或包含有效實體名稱字元的任意字串
若有多部已配置的網域伺服器,則應使用此組態。例如,NAEUR 可用來作為網域前綴。
* 
啟用「動態使用者登入」時,此設定可能會導致產生非預期的結果,因為所授權使用者的預設網域前置碼會從在使用者驗證時輸入的使用者名稱中去除,然後才嘗試繫結 Active Directory。例如,如果「所授權使用者的預設網域前置碼」設為 "mydomain\",且使用者向 ThingWorx 驗證時輸入了 "mydomain\username",則只會將「使用者名稱」傳送至 Active Directory 進行驗證。即使 "mydomain\username" 是該使用者在 Active Directory 之內的 domain\samAccountName,此驗證也可能會失敗
* 
如果相同的使用者名稱存在於多個 Active Directory 網域中,則如果正在登入的使用者不是在 Active Directory 中找到的實際使用者,驗證將會失敗。這將視查詢的順序而定。
所授權使用者的預設描述
設定為用於所有授權使用者之描述的描述字串值。這是一項很有幫助的設定,可允許向使用者新增前後關聯資訊,比如「由網域伺服器 Y 自動授權」。
userDefaultDescription
空白字串或任何描述字串
如果偏好讓所有授權使用者 (亦即自動建立/更新的使用者) 均使用預設的描述,則應使用此選項。
所授權使用者的預設主混搭
設定為用於所有授權使用者之預設混搭的主混搭名稱值。此設定允許所有授權使用者在登入 ThingWorx 時從一個通用的主混搭開始作業。這些混搭的其中一些範例包括訪客主混搭、自助服務主混搭,或是操作人員主混搭等等。
userDefaultHomeMashupName
要取消設定的空白字串,或是有效的現有混搭名稱
如果偏好讓所有授權使用者 (亦即自動建立/更新的使用者) 均使用預設的主混搭,則應使用此選項。
比如說,如果偏好讓所有使用者在進入 ThingWorx 應用程式時開始使用相同的 GuestMashup、SelfServiceMashup 或 LandingPageMashup,這會相當有用。
所授權使用者的預設行動混搭
針對所有授權使用者,設定用於行動裝置上的行動混搭名稱值。此設定允許所有授權使用者在登入 ThingWorx 時從一個通用的行動混搭開始作業。這些混搭的其中一些範例包括訪客行動混搭、自助服務行動混搭,或是操作人員行動混搭等等。
userDefaultMobileMashupName
要取消設定的空白字串,或是有效的現有混搭名稱
如果偏好讓所有授權使用者 (亦即自動建立/更新的使用者) 均使用預設的行動混搭,請使用此選項。
比如說,如果偏好讓所有使用者在進入 ThingWorx 應用程式時開始使用相同的 GuestMashup、SelfServiceMashup 或 LandingPageMashup,這會相當有用。
所授權使用者的預設標籤
一組設定在所有授權使用者上的模型標籤。此設定允許所有授權使用者擁有可用於搜尋/前後關聯識別的通用標籤。這些標籤的其中一些範例包括操作人員標籤、ProvisionedByDomainServerY、ProvisionedByDomainServerZ 等等。
userDefaultTags
要取消設定的空白字串,或是有效的現有標籤名稱
如果偏好讓所有授權使用者 (亦即自動建立/更新的使用者) 均使用一組預設的模型標籤,則應使用此選項。
使用者授權排除清單
這份組態表可讓 Active Directory 目錄服務的管理員使特定的 ThingWorx 使用者不參與 Active Directory 目錄服務的使用者授權功能。
使用者授權功能包括使用者建立、修改和刪除。使用 Active Directory 目錄服務配置 ThingWorx 時,現有使用者可能不希望由 Active Directory 管理其組態和存在性;而僅將其用於認證驗證。應將這些類型的使用者新增至「使用者授權排除」清單組態。
* 
管理員使用者會自動新增至此清單,而且不應移除。
管理員使用者是無法建立或刪除的 ThingWorx 預設使用者。不應自動修改管理員使用者。這麼做可能會造成在登入時發生不想要的組態變更。
使用者登入情境
下表依據在 ThingWorx 裡的 Active Directory 目錄服務中設定的組態選項,提供使用者在嘗試登入 ThingWorx 期間的預先與事後狀態。
* 
以下情境不會變更 Active Directory 伺服器中的使用者狀態/組態。
以粗體顯示的項目是使用者在 ThingWorx 中事後狀態的主要決定因素。
使用者在 AD 伺服器中的狀態
使用者在 ThingWorx 中的預先狀態
組態選項
使用者在 ThingWorx 中的事後狀態
不存在
不存在
任何組態
不存在
無法用來登入
不存在
存在 (由 ThingWorx 管理員手動建立)
密碼已設定/在 ThingWorx 中
啟用使用者授權建立
啟用使用者授權修改
啟用使用者授權刪除
已列在使用者授權排除清單中
存在
未修改或刪除
可用來登入
不存在
存在 (由 ThingWorx 管理員手動建立)
密碼未設定或不在 ThingWorx 中
啟用使用者授權建立
啟用使用者授權修改
啟用使用者授權刪除
已列在使用者授權排除清單中
存在
未修改或刪除
無法用來登入
不存在
存在 (由 ThingWorx 管理員手動建立)
啟用使用者授權建立
啟用使用者授權修改
啟用使用者授權刪除
未列在使用者授權排除清單中
不存在
無法用來登入
不存在
存在 (由 ThingWorx 管理員手動建立)
啟用使用者授權建立
啟用使用者授權修改
禁用使用者授權刪除
未列在使用者授權排除清單中
不存在
無法用來登入
存在
不存在
啟用使用者授權建立
啟用使用者授權修改
啟用使用者授權刪除
已列在使用者授權排除清單中
不存在
無法用來登入
存在
已禁用
不存在
啟用使用者授權建立
啟用使用者授權修改
啟用使用者授權刪除
未列在使用者授權排除清單中
不存在
無法用來登入
存在
「已鎖定」
不存在
啟用使用者授權建立
啟用使用者授權修改
啟用使用者授權刪除
未列在使用者授權排除清單中
不存在
無法用來登入
存在
不存在
禁用使用者授權建立
啟用使用者授權修改
啟用使用者授權刪除
未列在使用者授權排除清單中
不存在
無法用來登入
存在
不存在
啟用使用者授權建立
啟用使用者授權修改
啟用使用者授權刪除
未列在使用者授權排除清單中
存在 (已建立)
以成員身份新增至對應的群組
已新增預設的使用者設定
可用來登入
存在
存在
啟用使用者授權建立
啟用使用者授權修改
啟用使用者授權刪除
未列在使用者授權排除清單中
已配置使用者預設設定
已修改使用者
以成員身份新增至對應的群組或從中移除
已新增預設的使用者設定
可用來登入
存在
存在
啟用使用者授權建立
啟用使用者授權修改
啟用使用者授權刪除
已列在使用者授權排除清單中
已配置使用者預設設定
未修改使用者
可用來登入
存在
「已鎖定」
存在
任何組態
已鎖定使用者
無法用來登入
存在
已禁用
存在
任何組態
已禁用使用者
無法用來登入
使用者反鎖情境
帳戶反鎖設定是在 ThingWorx 中的 使用者管理子系統裡進行配置。
會將「鎖定管理員」定義為根據鎖定評估確定鎖定的系統 (ThingWorx 或 Active Directory)。
下表的關鍵字如下:
ThingWorx 反鎖嘗試組態:TLA
Active Directory 反鎖嘗試組態:ADL
鎖定評估
鎖定管理員
鎖定管理員最大嘗試次數組態範例
動作
結果
TLA > ADL
ADL
2 次嘗試
ThingWorx 發現一個使用者在 Active Directory 中遭到鎖定
立即鎖定 ThingWorx 使用者
TLA > ADL
ADL
2 次嘗試
使用者登入錯誤兩次
在兩次嘗試後鎖定 ThingWorx 使用者
TLA = ADL
* 
建議的反鎖組態是讓 ThingWorx 與 Active Directory 相符。
ADL
2 次嘗試
使用者登入錯誤兩次
在兩次嘗試後鎖定 ThingWorx 使用者
TLA < ADL
ADL
2 次嘗試
使用者登入錯誤兩次
在兩次嘗試後鎖定 ThingWorx 使用者
Active Directory 或 ThingWorx 目錄服務變更
如果在網域伺服器中刪除或更新使用者,則群組對應會在關聯的 ThingWorx Active Directory 目錄服務中更新。如果使用者預設設定變更,則建議在 ThingWorx 中針對該使用者使用 CurrentSessionInfo 資源中的 TerminateUserSessions 服務。
* 
如果進行下列兩種組態變更之一,並且存在經由先前組態所建立的使用者,Active Directory 目錄服務則無法將過去的使用者移轉至新使用者。系統會改而依新的或不同值來建立及管理新的使用者,而這些值是透過在「使用者 ID 屬性名稱」和/或網域中指定的屬性所設定。
結構對應組態中的「使用者 ID 屬性名稱」的值是使用者名稱。
網域前置碼已變更。
將使用者屬性從 Active Directory 對應至 ThingWorx UserExtension 內容
當新 Active Directory 使用者登入時,會在 ThingWorx 中建立該使用者,該使用者可能會根據 Active Directory 中的 Create User 設定自動授權。下表所述的選項允許對應的屬性從 Active Directory 伺服器自動對應至該使用者在 ThingWorx 中的 UserExtension 屬性表。當現有 Active Directory 使用者登入時,會將任何修改的值提取到使用者的 UserExtension 對應中。如果新增新的 UserExtension 組態表列對應,其會將新資料提取到使用者的 UserExtension 內容中。
欲在 ThingWorx Composer 中設定對應:
1. 請導覽至 Composer 中的 Active Directory 目錄服務 (「安全性」 > 「目錄服務」 > <Active Directory 服務名稱>)。
2. 顯示組態頁,並向下捲動至「使用者延伸功能內容對應組態表」部份,並按一下「新增」,如此處所示:
3. 在「使用者延伸功能內容對應」視窗的「Active Directory 屬性名稱」欄位中,鍵入您要自動對應至 ThingWorx 內容的 Active Directory 屬性名稱。以下螢幕擷取畫面顯示選取 ThingWorx 內容的下拉選單。從 ThingWorx v.8.3.5 開始提供下拉選單。選取此清單中的其中一個值。
4. 選取並按一下「新增」之後;新列會顯示在組態表中:
下列組態表中的選項僅在 ThingWorx 8.2.1 及更新版本中提供。
屬性
描述
activeDirectoryAttributeName
可對應之 Active Directory 使用者屬性中的屬性名稱。此欄位可以保留空白,以指定從 Active Directory 同步處理所有使用者的預設值。
* 
如果指定屬性,但在 Active Directory 中的使用者上找不到,應用程式記錄檔中會顯示下列錯誤訊息:
Attribute: <attribute_name> not found.
userExtensionPropertyName
需要對應至 Active Directory 屬性之 ThingWorx 使用者 UserExtension 表中使用者延伸功能內容的名稱。
* 
如果您在應用程式記錄檔中看到 userExtensionProperty 的名稱無效的錯誤訊息,請參閱 疑難排解:UserExtension 內容的無效名稱
userExtensionDefaultValue
當在 AD 伺服器中找不到屬性,或該屬性無效或為空白的情況下,UserExtension 內容的預設值。
對應存在於多個網域中的使用者和群組
使用「樹系名稱識別元」選項將作為單獨 Active Directory 網域中群組成員的使用者對應至其在 ThingWorx 中的各自群組。當此欄位填入任何字串時,則會識別網域控制器集合/樹系。使用相同字串來配置的每個目錄服務物件將能夠在其「群組對應」組態內對應彼此網域中的群組。
樹系名稱識別元值
結果
<空白> 或空字串
群組僅在從中請求它們的特定目錄服務物件中可見。
與其他任何目錄服務組態均不相符的字串
群組僅在從中請求它們的特定目錄服務物件中可見。
與一個或多個目錄服務組態相符的字串
群組僅在從中請求它們的特定目錄服務物件以及其他具有相符「樹系名稱識別元」的目錄服務物件中可見。
範例 1:可在所請求的特定目錄服務物件以及其他具有相符的「樹系名稱識別元」之目錄服務物件中看到的群組
網域名稱
已配置的群組
樹系名稱識別元值
用於對應的可見群組
網域 1
群組 1、群組 2
<空白>
群組 1、群組 2
網域 2
群組 3、群組 4
<空白>
群組 3、群組 4
網域 3
群組 5、群組 6
<空白>
群組 5、群組 6
範例 2:所有目錄服務物件上的「樹系名稱識別元」均不同
網域名稱
已配置的群組
樹系名稱識別元值
用於對應的可見群組
網域 1
群組 1、群組 2
"domainForest1"
群組 1、群組 2
網域 2
群組 3、群組 4
"DomainForest"
群組 3、群組 4
網域 3
群組 5、群組 6
"Domain Forest"
群組 5、群組 6
範例 3:3 個目錄服務物件之其中 2 個上的「樹系名稱識別元」相同
網域名稱
已配置的群組
樹系名稱識別元值
用於對應的可見群組
網域 1
群組 1、群組 2
"domainForest"
群組 1、群組 2、群組 3、群組 4
網域 2
群組 3、群組 4
"domainForest"
群組 1、群組 2、群組 3、群組 4
網域 3
群組 5、群組 6
<空白>
群組 5、群組 6
範例 4:所有三個目錄服務物件上的「樹系名稱識別元」均相同
網域名稱
已配置的群組
樹系名稱識別元值
用於對應的可見群組
網域 1
群組 1、群組 2
"domainForest"
群組 1、群組 2、群組 3、群組 4、群組 5、群組 6
網域 2
群組 3、群組 4
"domainForest"
群組 1、群組 2、群組 3、群組 4、群組 5、群組 6
網域 3
群組 5、群組 6
"domainForest"
群組 1、群組 2、群組 3、群組 4、群組 5、群組 6
匯入驗證失敗
匯入 Active Directory 實體時,匯入只會在 XML 檔案中指定的值與欄位的資料類型不符時失敗。例如,如果為 <port> 元素提供值 test,則匯入將會失敗。以下是發生此問題時顯示的 XML 程式碼片段:

<Row>
<adminPassword><![CDATA[]]></adminPassword>
<adminPrincipal><![CDATA[CN=Administrator,CN=Users,DC=domain,DC=com]]></adminPrincipal>
<domain><![CDATA[dc=domain,dc=com]]></domain>
<port>test</port> <================================ INVALID DATA TYPE VALUE FOR <port>. MUST BE AN INTEGER.
<protocol><![CDATA[LDAP]]></protocol>
<server><![CDATA[10.80.21.164]]></server>
</Row>
以下是螢幕擷取畫面顯示了您會在 Composer 中看到的內容:
以下錯誤會寫入至 ApplicationLog:

ERROR: [message: Conversion Error on Field port : Unable To Convert From com.sun.org.apache.xerces.internal.dom.ElementNSImpl to INTEGER]
ERROR: Entity import failed
匯入驗證成功
在驗證因遺失必要欄位或無效組態而失敗的情況下,目錄服務實體仍可匯入,但將會標記為已禁用。欲啟用實體,必須更新無效的欄位。
* 
啟用之前,目錄服務實體無法用於驗證。啟用匯入為已禁用之目錄服務實體的程序是手動進行的。您必須導覽至在 ThingWorx Composer 中禁用的實體、將其啟用,然後儲存。
以下是無效組態的範例,在無效參數下有一個註解 (protocol):

<Row>
<adminPassword><![CDATA[]]></adminPassword>
<adminPrincipal><![CDATA[CN=Administrator,CN=Users,DC=domain,DC=com]]></adminPrincipal>
<domain><![CDATA[dc=domain,dc=com]]></domain>
<port>test</port>
<protocol><![CDATA[INVALID-PROTOCOL]]></protocol>
<== INVALID CONFIGURATION VALUE FOR <protocol>. MUST BE EITHER LDAP OR LDAPS.
<server><![CDATA[10.80.21.164]]></server>
</Row>
請注意,此實體會成功匯入至 ThingWorx:
但是,請注意,實體本身上的「已啟用」核取方塊未選取,這表示該實體已停用。以下是一個範例:
此情況的下列錯誤會顯示在 ApplicationLog 中:

ERROR: Directory Service Error: The URI Scheme must be LDAP or LDAPS
組態錯誤訊息
下表列出了可能會顯示在 ApplicationLog 中的錯誤訊息,這些錯誤訊息基於 Active Directory 實體中的無效配置欄位:
組態錯誤訊息
欄位
組態部份
錯誤訊息
URI 配置
連線設定
目錄服務錯誤:URI 配置必須是 LDAP 或 LDAPS。
伺服器 FQDN 或 IP 位址
伺服器網路連接埠
連線設定
目錄服務錯誤:伺服器 FQDN 或 IP 位址不得為 null。
目錄服務錯誤:java.net.MalformedURLException: Not an LDAP URL: <IP>:<Port> Cannot parse url: <IP><Port
目錄服務錯誤:
java.net.ConnectException: Connection refused (Connection refused) to 'Server FQDN or IP address' and 'Server Network Port' <IP>:<Port>
伺服器網路連接埠
連線設定
目錄服務錯誤:伺服器網路埠必須在 0 到 65535 的範圍之間。
網域辨別名稱
連線設定
目錄服務錯誤:網域不得為 null。
管理主體名稱
連線設定
目錄服務錯誤:管理主體名稱不得為 null。
* 
若「未」啟用/核取「動態使用者登入」,管理主體名稱為必填。
管理密碼
連線設定
目錄服務錯誤:管理密碼不得為 null。
* 
若「未」啟用「動態使用者登入」,管理密碼為必填。
使用者 ID 屬性名稱
結構對應
目錄服務錯誤:attributeUserIdName 不得為 null。
使用者基準辨別名稱
結構對應
目錄服務錯誤:userBaseDN 不得為 null。
群組物件類別名稱
結構對應
目錄服務錯誤:groupObjectClass 不得為 null。
群組成員資格屬性名稱
結構對應
目錄服務錯誤:memberOfAttribute 不得為 null。
群組屬性名稱
結構對應
目錄服務錯誤:groupAttribute 不得為 null。
使用者旗標屬性名稱
結構對應
目錄服務錯誤:userControlAttribute 不得為 null。
使用者控制屬性的已停用位元
結構對應
目錄服務錯誤:userDisableBit 不得為 null,且必須是整數。
使用者控制屬性的反鎖位元
結構對應
目錄服務錯誤:userLockoutBit 不得為 null,且必須是整數。
Active Directory 群組名稱
群組對應
目錄服務錯誤:activeDirectoryGroupName 不得為 null。
ThingWorx 群組名稱
群組對應
目錄服務錯誤:thingworxGroupName 不得為 null。
所授權使用者的預設主混搭
使用者預設值
目錄服務錯誤:userDefaultHomeMashupName 不得為無效的混搭名稱。
所授權使用者的預設行動混搭
使用者預設值
目錄服務錯誤:userDefaulMobileMashupName 不得為無效的混搭名稱。
所授權使用者的預設標籤
使用者預設值
目錄服務錯誤:userDefaulTags 不得有無效的標籤。
目錄服務錯誤:userDefaulTags 不得有無效的標籤名稱。
ThingWorx 使用者名稱
使用者授權排除清單
目錄服務錯誤:thingworxUserName 不得為 null。
測試 Active Directory 連線能力
從 v.8.3.5 開始,在目錄服務組態頁的「連線設定」部份中,「測試連線」下的「核對」按鈕可讓您根據目前組態測試與 Active Directory 伺服器之間的連線。組態之「連線設定」部份中的下列欄位可用於測試 Active Directory 連線:
URI 配置
伺服器 FQDN 或 IP 位址
伺服器網路連接埠
管理主體名稱
管理密碼
「核對」按鈕會啟動 TestConnection 服務,這會用到下列參數:
TestConnection 服務的參數
參數
基礎類型
描述
userName
STRING
Active Directory 中的使用者名稱。
password
STRING
Active Directory 使用者的加密密碼。
protocol
STRING
使用的結構描述 (LDAP 或 LDAPS)。
server
STRING
Active Directory 實例的主機或 IP 位址。
port
INTEGER
Active Directory 實例的埠。
連線測試的結果會在 result 中傳回,其為 INFOTABLE,包含下列資訊:
status:(布林值) 指示是否成功連線到 Active Directory。
message:(字串) 提供測試失敗原因之任何實用資訊的訊息。
* 
若已啟用 動態使用者登入,則不會使用「管理主體名稱」與「管理密碼」,並隱藏「核對」按鈕。
疑難排解:Active Directory 網域前置碼與動態使用者登入
Active Directory 目錄服務具有組態設定 Provisioned User's Default Domain Prefix,這可能會干擾「動態使用者登入」。以下是一組「使用者預設值」
Provisioned User's Default Domain Prefix 設定可讓您指定限制目錄服務可以驗證哪些使用者的前置碼。如果您為同一個 ThingWorx Platform 配置了多個 Active Directory 目錄服務,請考慮使用此選項來防止所有目錄服務都嘗試驗證同一位使用者。
但是,請注意,會從傳送至 Active Directory 的使用者名稱中去除此前置碼。如果指定前置碼正好是使用者的 Active Directory 網域,使用者就無法登入至 Active Directory。
例如:
1. DOMAIN\ 會指定為 Provisioned User's Default Domain Prefix
2. 使用者 DOMAIN\user1 嘗試登入 ThingWorx Platform。
3. DOMAIN\ 會從傳至 Active Directory 的使用者名稱中去除,user1 無法登入
此問題目前不影響已禁用「動態使用者登入」的 Active Directory 目錄服務。
欲解決此問題,請遵循下列做法:
避免使用預設網域前置碼 (偏好) - 啟用「動態使用者登入」時,避免使用使用者的預設網域前置碼設定。
請使用使用者必須輸入的其他前置碼,或讓使用者輸入網域前置碼兩次 - 您可以指定透過 DOMAIN\SamAccountName 登入所需的 DOMAIN\ 前置碼以外的其他前置碼。例如,您可能有一個前置碼為 PREFIX-,而使用者就可以使用 PREFIX-DOMAIN\prefix 登入。
疑難排解:UserExtension 內容的無效名稱
將 Active Directory 屬性對應至 ThingWorx UserExtension 內容時,可從下拉選單中選取 UserExtension 內容的名稱。ThingWorx 應用程式記錄檔中可能會出現下列錯誤訊息:
Property name: <property_name> not found
in UserExtensions properties
此錯誤由下列條件造成:
針對 Active Directory 目錄服務匯入的 XML 檔案包含無效的 userExtensionPropertyName 名稱,且
使用者登入並透過包含無效 userExtensionPropertyName 組態的 Active Directory 目錄服務進行驗證。
如果您手動編輯 XML 檔案,便可能發生此錯誤。您可以從 ThingWorx Composer 中 目錄服務實體組態頁內的「使用者延伸功能內容對應」表中移除無效的項目。