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
구성 오류 메시지
다음 표에는 Active Directory 엔티티의 잘못 구성된 필드를 기반으로 ApplicationLog에 나타날 수 있는 오류 메시지가 나와 있습니다. 다음은 이 표에 나열된 구성 섹션에 대한 링크를 제공하는 간단한 표입니다.
구성 오류 메시지
필드 | 구성 섹션 | 오류 메시지 |
---|
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 도메인 접두사 및 동적 사용자 로그인
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에서 디렉터리 서비스 엔티티의 구성 페이지에 있는 사용자 확장 속성 매핑의 테이블에서 잘못된 엔트리를 제거할 수 있습니다.