문제

그래서 직접 프로젝트 다시 파업. LDAP 전문가는 아니지만 표준은 패키지에서 어떤 방법을 구현하든 DNS 인증서로부터 인증서를 받기 위해 모든 패키지가 필요하기 때문에 테스트 환경을 설정하려고합니다.

에 따르면 문서, "3.3.3 LDAP 쿼리"섹션에서 규정 된 이벤트 시퀀스 (관련성을 위해 트림) :

* Discover the Base DNs
     Branches in LDAP must be defined by a “Base DN”. The list of Base DNs that are
     provided by a LDAP directory are found by doing a LDAP Query with a NULL (i.e.
     “”) Base DN, and ObjectClass=”DN”.
* Query across the Base DN for entries where "Mail" contains the endpoint address

LDAP_* 기능을 사용하여 PHP 에서이 프로세스를 구현하려고 노력하고 있지만 그 길은 작동하지 않는 것 같습니다. 분명히 NULL은 빈 문자열과 동일하지 않습니다 (후자는 LDAP_SEARCH를 호출하는 경우 "그러한 객체 없음"오류를 반환합니다. "DN"은 ObjectClass 속성에 유효한 값이 아닙니다.

TL; DR, 익명 원격 사용자가 내가 놓친 (?) 기본 DN을 검색하는 또 다른 방법이 있습니까?

업데이트 : 내 문제의 근본 원인을 반영하도록 제목을 다시 표시했습니다. LDAP_* API가 '기본'범위를 지정할 수없는 경우 PHP의 Rootdse를 읽습니다.

도움이 되었습니까?

해결책

그래서 문서를 통해 또 다른 읽은 사람이 저에게 내 질문에 대답했습니다.

분명히, ldap_search (), ldap_list () 및 ldap_read ()의 유일한 차이점은 각각 스코프 (ldap_scope_subtree (sub), ldap_scope_onelevel (1) 및 ldap_scope_base (base)입니다. 따라서 다른 대신 LDAP_READ ()를 사용하면 rootdse를 얻을 수 있습니다.

다른 팁

에서 루트 DSE. "NamingContexts"를 참조하십시오.

업데이트:

Java :

LDAPConnection conn = new LDAPConnection(hostname,port);
SearchRequest req = new SearchRequest("",SearchScope.BASE,"(&)","+");
SearchResult result = conn.search(req);

// If the search succeeds, the result will comprise one entry,
// and that entry is the Root DSE:

dn: 
subschemaSubentry: cn=schema
namingContexts: C=us
vendorName: UnboundID Corp.
vendorVersion: UnboundID Directory Server 4.1.0.6
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top