LDAP Result Code

LDAP을 사용 중 아래와 같이 access log에서 err= 혹은 ResultCode= 로  출력되는 코드를 보시적 있으신가요??

 

ResultCode는 클라이언트의 요청에 대한 LDAP의  응답 결과를 나타나며 해당 숫자코드를 클라이언트에게 반환하게 됩니다.

[ ResultCode ]

자 그럼  Result Code를 순서대로 나열하여 살펴 보겠습니다.

0 : Success

– LDAP 명령이 성공적이였음을 나타낸다.

1: Operation Error

– 현재 진행하려는 작업이 다른 작업과 관련하여 올바르게 순서가 지정되지 않았을 경우 출력

2: Protocol Error

– 올바른 형식이 아닌 데이터를 서버가 수신하였을때 출력.

– 요청에 정의된 문장에서 사용하는 속성 TYPE 이 서버에 의해 지원되지 않을때.

– 요청이 지원하지 않는 LDAP Version 으로 정의된 Bind 요청일 경우.

–  Modify 요청 시 알 수 없는 명령 혹은 수정할 Entry가 존재 하지 않을 경우.

– DN Modify 요청 시 다음 중 한개의 조건이라도 만족 할때.

–  새로운 RDN이 유효 하지 않음.

–  새로운 상위 DN 정의 시 사용자가 LDAP v2 사용자로 식별됨.

–  SEARCH 요청 시 다음 중 한 개의 조건이라도 만족할 때.

–  알 수 없는 Scope 가 정의됨

–  알 수 없는 filter Type이 정의가 됨.

–  Filter Type이 LDAP _FILTER_GE 혹은 LDAP _FILTER_LE로 정의 되었으나 사용자가 LDAPv2 사용자로 식별됨.

–  요청이 확장 가능한 Filter를 포함하였으나( Matching Rules 사용), 사용자가 LDAPv2 사용자로 식별됨.

–  LDAP_Auth_SIMPLE 혹은 LDAP_AUTH_SASL 이외의 다른 인증 방법이 정의 되었을때.

3: Time Limit Exceeded

–   클라이언트가 지정한 제한 시간이 초과 되어 작업을 완료할수없음을 나타낸다.

4: SizeLimit Exceeded

–  작업이 완료되기 전에 클라이언트가 지정한 크기제한을 초과했음을 나타낸다.

5: Compare false

–  비교 연산이 성공적으로 완료되고 그 결과로 FALSE or Undefined 로 평가되었음을 나타낸다.

6: Compare true

–  비교 연산이 성공적으로 완료되고, 그 결과로 TRUE로 평가 되었음을 나타낸다.

7:Authentication method not supported

–  현재 진행하는 인증방법 혹은 메커니즘을 지원하지 않음을 나타낸다.

8: Strong authentication required

–  서버가 작업을 완료하기 위해 강력한 인증을 요구함을 나타냅니다.

–  연결해제 알림작업과 함께 사용될 때 이 코드는 서버와 클라이언트 사이에 설정된 보안연결이 예기치 한게 실패 혹은 손상되었음을 감지합니다.

10: Referral received

–  작업을 끝 마치기 위해서 참조를 확인해야함을 나타낸다. (RFC 4511 Section 4.1.10 )

–   LDAPv2 사용자가 다른 LDAP Server를 참조하게 하기 위해 사용자에게 보낸다. 이 Code를 사용자에게 보낼 때, Server는 다른 LDAP Server라고 식별된 새로운 LDAP URL들의 목록을 포함하여 보낸다. 만약 사용자가 요청 내 LDAPv3라고 식별되면, LDAP REFERRAL Result Code가 해당 Code 대신 보내진다.

11: Administrative limit exceeded

–  관리 제한을 초과했음을 나타낸다.

–  SEARCH 수행이 초과된 상태에서 Look-Through 제한을 나타낸다.  Look-Through 제한은 검색결과의 잠재적인 후보들의 목록을 얻을 때 서버에서 체크할 Entry의 최대 수이다 .

12: Unavailable critical extension

–  중요한 제어 또는 Matching Rules의  정의가 서버에서 지원하지 않을때 나타낸다.

–  클라이언트의 요청이 지원하지 않는 제어 혹은 SEARCH 요청에서 정의된 필터를 지원하지 않을때 해당 코드를 출력한다.

13: Confidentially required

–  작업 수행을 위해 기밀성이 필요할 때 나타낸다.

14: SASL bind in progress

–  인증이 성공하지 못하였으며, 클라이언트가 요청한 인증 처리를 계속하기 위해서 SASL Tool을 사용해 새로운 바인드 요청을 송신할것을 나타냅니다.(RFC 4511 Section 4.2)

16: No such attribute

–  정의된 attribute 가 Entry 내에 존재하지 않음을 나타낸다.

17: Undefined attribute type

–  클라이언트가 요청에 정의되지 않은 attribute Type 이 있음을 나타낸다.

18: Inappropriate matching

– 정의되지 않은 Matching Rules 를 포함하였음을 나타낸다.

19: Constraint violation

–  클라이언트가 설정된 제약조건을 따르지 않았음을 나타낸다.

–  Single-Value 제약조건에서 Multiple-Value를 사용하였을 경우에 나타낸다.

20: Type or value exists

–  이미 존재하는 속성 Type 혹은 값에 대해 추가를 시도하는 요청이 있을 때 나타낸다.

–  추가하려는 값이 이미 존재할 경우

–  Server의 Schema에 속성을 추가 할때, 속성의 OID가 이미 Schema 내에 ObjectClass에 의해 사용되고 있을 경우

21: Invalid syntax

–  잘못된 Syntax를 포함하고 있는 요청을 받을 시 나타낸다.

–  Server가 잘못된 Syntax의 ACI(Access Control Instruction)을 동작할 때

–  ACI의 속성을 추가 혹은 수정을 시도하는 요청에서 속성의 값이 잘못된 Syntax의 ACI 일 때

–  Substring 필터를 포함한 Search 요청에서 필터의 Syntax가 잘못 되었을 때

–  Schema 수정을 시도하는 요청에서 제공되는 값이 없을 때. (예를 들어, 요청이 Object Class 속성의 모든 값을 삭제하려 시도할 때.)

32: No such object

–  Server가 요청 내에 정의된 엔트리를 찾을 수 없을 때 나타낸다

–  만약 요청된 Entry를 찾을수 없고 사용자에게 다른 LDAP Server를 알려줄수도 없다면 해당 코드를 출력한다.

33: Alias Problem

–   설정한 Alias 에 문제가 있음을 나타낸다.

34: Invalid DN syntax

–   잘못된 DN이 요청되었을 경우를 나타낸다.

35: Object is a leaf

–  정의된 Entry가 Leaf Entry 임을 나타낸다. ( Leaf Entry = 자식 Entry가 없음)

36: Alias dereferencing problem

–  Alias가 역 참조되어 문제가 발생되었음을 나타냅니다.

48: Inappropriate authentication

–  자격의 종류가 인증의 방법으로 사용하기 적합하지 않음을 나타내며, 만약 Bind 요청에서 간단한 인증이 사용되는데 Entry 가 userPassword 속성을 갖고 있지 않다면 해당 코드를 클라이언트에게 반환한다.

49: Invalid credentials

–  요청에서 제공된 자격이 잘못 되었음을 나타내며, 만약 Bind 요청이 사용자를 위한 잘못된 자격을 갖고 있거나, 사용자의 패스워드가 이미 만료되었다면 해당 코드를 클라이언트에게 반환한다.

50: Insufficient access

–  사용자가 작업을 수행함에 있어 충분하지 않은 접근 권한으로 접근 했음을  나타낸다.

51: Server is busy

–  요청받은 작업을 진행하기 힘들정도로 서버가 바쁘다면 해당 코드를 반환한다.

52: Server is unavailable

– Server가 종료 중이거나 작업을 완료하는데 필요한 하위 시스템이 오프라인 상태임을 나타낸다.

53: Server is unwilling to perform

–  Server가 요청 작업을 수행하기를 거부할 때 나타난다. 다음과 같은 상황에서 Server는 해당 Result Code를 반환한다.

–  사용자는 처음 로그인을 하고 비밀번호를 변경할 필요가 있는데 다른 LDAP 명령을 요청할 때. 이런 상황에선 만료된 Result Code가 만료된 비밀번호 제어와 함께 나타남

–  NT-Sync 서비스가 실행 중 이고, 작업이 이 서비스에 의하여 거부 됐을 때

–  DN을 Modify 하는 요청에서 최상위 DN이 정의 되었을때

–  Read-Only 모드의 Directory 에 쓰기요청을 할 경우

–  삭제 요청에서 Root DSE를 삭제하려 시도할 때

–  Modify DN 요청에서 Root DSE의 DN을 수정하려 시도 할때

–  Schema Entry 를 수정하기 위한 Modify  요청이 다음 중 조건과 일치할 경우

–  작업이 LDAP_MOD_REPLACE 일 때. (Server는 Schema 엔트리 속성들을 대체하게 허용하지 않는다.)

–  요청이 다른 Object Class의 부모 Object Class를 삭제하려 시도할 때.

–  요청이 Read-Only인 Object Class 혹은 속성을 삭제하려 시도할 때.

–  Server가 요청에 정의된 작업을 구현하지 않는 데이터베이스 Plug-in을 사용할 때

54: Detected

–  Server가 내부적인 Loop 때문에 요청한 작업을 수행할 수 없음을 나타낸다.

64: Naming violation

– 요청이 DIT의 구조를 위배한다.

65: Object class violation

–  요청이 Server의 Schema를 준수하지 않고 새로운 Entry를 정의하거나 이미 존재하는 Entry 를 수정할때 나타난다.

–  ADD 요청이 Schema를 준수하지 않는 새로운 Entry를 추가할때.

–  Modify 요청이 Schema를 준수하지않는 Entry를 수정하려 할때.

66: Operation not permitted on a non-leaf entry

– 요청 작업이 오직 Leaf-Entry이 없는 Branch-Entry에만 적용될때 나타난다.

67: Operation not permitted on a RDN

–  요청 작업이 엔트리의 RDN에게 영향을 미치면 나타난다.

–  만약 Modify 요청이 RDN으로 사용되는 Entry의 속성 값을 삭제한다면 해당 코드를 반환한다.

68: Entry already exists

–  요청이 디렉토리 내 이미 존재하는 Entry를 추가하려 함을 나타낸다.

–  ADD 요청이 디렉토리 내에 이미 존재하는 Entry를 추가하려 할때.

–  Modify  DN 요청이 한 Entry의 DN 을 다른 Entry에서 식별된 DN으로 수정하려 할때.

–  Schema에 속성을 추가하는 요청에서 속성에 정의된 이름 혹은 OID가 이미 존재할 때.

69: Cannot modify object class

–  수정 할 수 없는 Object Class 를 수정을 시도할 경우를 나타냄

70: Results too large

–  요청의 크기가 너무 클경우 해당 코드가 반환된다.

71:  Affects multiple servers

 –   요청 작업이 여러대의 Server에서 수행이 필요할 경우 이작업이 허용되지 않을 경우 해당 코드가 반환된다.

76: Virtual list view error

80:  Unknown error

–  알수 없는 에러

81: Cannot contact LDAP server

 –  C에 대한 LDAP SDK가 접속을 구성할 수 없거나 LDAP Server와 연결을 잃었을 때 나타난다. 만약 Server와 첫 연결 시 구성되지 않는다면 사용자가 정확한 Host Name과 Port Number를 정의하였는지 검증해야 하고 Server가 구동 중인지 검증해야 한다

82: Local error

–  LDAP 사용자에서 Error가 발생하면 해당 코드를 반환한다.

83: Encoding error

–  LDAP 사용자가 Server에게 보내기위해 LDAP 요청 을 Encoding 할 때 Error 가 발생하면 해당 코드를 반환한다.

84: Decoding error

–  LDAP 사용자가 Server로부터 LDAP 응답을 받아 Decoding 할 때 Error가 발생할경우 해당 코드를 반환한다.

85: Timed out

–  LDAP 사용자가 Server로부터 응답을 기다리는 동안 제한시간이 초과하게 되면 해당 코드를 반환한다.

86: Unknown authentication method

–  알수없는 인증 방법이 정의되었을때 반환된다.

–  만약 ldap_bind() 혹은 ldap_bind_s()가 호출되고 LDAP_AUTH_SIMPLE이 아닌 다른 인증 방법이 정의 되었다면, C에 대한 LDAP SDK 라이브러리는 해당 코드를 반환한다. (이 함수는 오직 사용자가 간단한 인증만 사용할게 허용한다.)

87: Bad search filter

–  Search 필터를 정의할 때 Error가 발생하면 나타난다. 만약 LDAP Search 요청에서 정의된 Search 필터를 Encoding 할 수 없다면, C에 대한 LDAP SDK는 해당 코드를 반환한다.

88: User cancelled operation

–  사용자가 LDAP 작업을 취소하면 나타난다

89: Bad parameter to an LDAP routine

–  잘못된 매개변수 값을 사용하였을 경우 해당 코드를 반환한다.

90: Out of memory

–  가용할 메모리가 없다면 해당 코드를 반환한다.

91: Cannot connect to the LDAP server

–  LDAP 사용자가 접속을 구성할수 없거나, LDAP 서버와의 연결을 잃었을 경우  해당 코드를 반환한다.

92: Not supported by this version of LDAP

–  LDAP 사용자가 Server가 지원하지 않는 기능을 사용하려 시도할때 반환된다.

–  만약 사용자가 LDAPv2 사용자로 식별이 되고, 이 사용자가 LDAPv3 에서 사용가능한 기능을 사용하려 할때

–  확장된 작업을 요청하거나 확장된 응답을 분석하기 위해 ldap_extended_operation(), ldap_extended_operation_s(), 혹은 ldap_parse
_extended_result()를 호출할 때

–  ldap_rename() 혹은 ldap_rename_s()를 호출하고 사용자가 Argument로서 새로운 ‘상위 DN’을 정의할 때

–  간단한 인증과 SASL 인증을 요청하거나 SASL bind 응답을 분석하기 위해 ldap_sasl_bind(), ldap_sasl_bind_s(), 혹은 ldap_parse_sasl_bind_
result()를 호출할 때.

–  Server의 응답으로부터 가성 목록 제어를 분석하기 위해 ldap_parse_
virtuallist_control()을 호출할 때.

93: Requestd LDAP control not found

–  요청된 LDAP 제어를 찾을수 없을 경우 반환된다.

–  제어를 위한 Server의 응답을 분석하는데 요청된 제어를 찾을수 없을 때

–  Ldap_parse_entrychange_control()이 호출되었으나 Server의 응답에 Entry Change Notification Control을 찾을 수 없을 때

–  Ldap_parse_virtuallist_control()가 호출되었으나 Server의 응답에 Virtual list view response control을 찾을 수 없을 때

94: No results returned

–  Server로 부터 반환되는 결과가 아무것도 없을 경우 해당 코드를 반환한다.

95: Additional results to return

–  일련의 결과에서 결과가 추가적으로 존재할 경우 반환된다.

–  Ldap_parse_sasl_bind_result() 함수가 작업의 Result Code를 검색하기 위해 호출되고 Server로 부터 추가적인 Result Code가 LDAP 구성 내 가용할 때

96:  Client detected loop

–  LDAP 사용자가 Loop를 발견 했을 때 반환된다. ( 예를 들어 참조가 따라올 경우)

97: Referral hop limit exceeded

–  Referral hop limit를 초과했을 경우 반환된다.

–  참조가 따라올 때 , 만약 사용자가 referral hop limit에 의하여 허용되는 것 보다 다른 Sever엣 더 여러번 호출 될때

[Reference]

http://www.openldap.org/doc/admin24/appendix-ldap-result-codes.html

https://docs.oracle.com/cd/E19957-01/817-707/resultcodes.html#wp30395

https://www.ldap.com/ldap-result-code-reference

 


답글 남기기