解决 Active Directory 问题
本主题提供了以下部分以帮助您解决 Active Directory 相关问题:
实体导入失败,无法转换错误
导入 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
要解决此问题,请仔细检查 XML 以确保所提供的值为适当的数据类型。
导入验证失败,但导入成功
对于由于缺少必填字段或配置无效而导致验证失败的情况,“目录服务”实体仍可导入,但它将被标记为禁用。要启用该实体,必须更新无效字段。
| “目录服务”实体在启用之前不能用于身份验证。启用导入为禁用的“目录服务”实体这一过程为手动过程。您必须导航至 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 地址不能为空。 目录服务错误: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 范围内。 |
域可分辨名称 | 连接设置 | 目录服务错误:域不能为空。 |
管理者名称 | 连接设置 | 目录服务错误:管理者名称不能为空。 | 如果未启用/选中“动态用户登录”,则管理者名称为必填。 |
|
管理密码 | 连接设置 | 目录服务错误:管理密码不能为空。 |
用户 ID 属性名称 | 架构映射 | 目录服务错误:attributeUserIdName 不能为空。 |
用户基础可分辨名称 | 架构映射 | 目录服务错误:userBaseDN 不能为空。 |
组对象类名称 | 架构映射 | 目录服务错误:groupObjectClass 不能为空。 |
组成员资格属性名称 | 架构映射 | 目录服务错误:memberOfAttribute 不能为空。 |
组属性名称 | 架构映射 | 目录服务错误:groupAttribute 不能为空。 |
用户标志属性名称 | 架构映射 | 目录服务错误:userControlAttribute 不能为空。 |
用户控制属性的禁用位 | 架构映射 | 目录服务错误:userDisableBit 不能为空,且必须为整数。 |
用户控制属性的锁定位 | 架构映射 | 目录服务错误:userLockoutBit 不能为空,且必须为整数。 |
Active Directory 组名称 | 组映射 | 目录服务错误:activeDirectoryGroupName 不能为空。 |
ThingWorx 组名称 | 组映射 | 目录服务错误:thingworxGroupName 不能为空。 |
设置的用户默认主混搭 | 用户默认值 | 目录服务错误:userDefaultHomeMashupName 不能为无效混搭名称。 |
设置的用户默认移动混搭 | 用户默认值 | 目录服务错误:userDefaulMobileMashupName 不能为无效混搭名称。 |
设置的用户默认标记 | 用户默认值 | 目录服务错误:userDefaulTags 不能有无效标记。 目录服务错误:userDefaulTags 不能有无效标记名称。 |
ThingWorx 用户名 | 用户设置排除列表 | 目录服务错误:thingworxUserName 不能为空。 |
下表提供了指向上表中配置部分相关主题的链接:
配置部分 | 主题 |
---|
连接设置 | |
架构映射 | |
组映射 | |
用户默认值 | |
用户设置排除列表 | |
故障排除: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 包含无效的名称,并且
• 用户所登录并通过身份验证的 Active Directory 目录服务配置了无效的 userExtensionPropertyName。
如果之前手动编辑了 XML 文件,则会出现此错误。要移除无效条目,可前往 ThingWorx Composer,在“目录服务”实体的“配置”页面中的“用户扩展属性映射配置表”中进行移除。