2011-09-08 5 views
1

LDAP 서버 (이 경우 Active Directory)에 대한 JNDI 연결이 있습니다. 나 또한 ctx.extendedOperation(new StartTlsRequest()) 보안 연결을 얻으려고.JNDI를 사용하여 Java에서 LDAP bindRequest를 적용하려면 어떻게해야합니까?

이 연결에서 자격 증명의 유효성을 검사해야합니다. 나는 "BindRequest의"명령에만 JNDI 컨텍스트에서 수행 된 다음 동작에 LDAP를 통해 발행 그러나

ctx.addToEnvironment(Context.SECURITY_AUTHENTICATION, "simple"); 
ctx.addToEnvironment(Context.SECURITY_PRINCIPAL, principal); 
ctx.addToEnvironment(Context.SECURITY_CREDENTIALS, credentials); 

사용하여 로그인 할 수 있습니다. 그러나 나는 그걸로하고 싶지 않습니다. 인증 정보 만 확인하면됩니다. "bindRequest"를 시행 할 방법이 있습니까?

그렇지 않으면 동작을 내 자신의 NOP로 사용해야합니까? 존재하지 않는 개체를 검색하거나 존재하는 개체의 일부 특성을 쿼리해야합니까? 그것은 빠르 필요가 있습니다, 그것은 서버 측에서 어떤 일도 만들어서는 안되며 가능한 한 적은 대역폭을 사용해야합니다. (사실 해당 작업은 처음부터 nessessary 않을 것 때문에 ...)

감사합니다, 스테 펜

답변

1

LdapContext.reconnect()는 LDAP 바인딩을 수행합니다.

+0

그냥 내가 무엇을 찾고 있었습니까. 고마워. –

0

지금까지 내가 해결책은을, 디렉토리에있는 주체에 대해보고 그냥 이해 같은 필터를 사용하여 검색 :

(&(objectCategory=person)(sAMAccountName=principal)) 

을 주요 양식 인 경우 : "USER1"

(&(objectCategory=person)(userPrincipalName=principal)) 

을 주요 양식 인 경우 : "USER1의 @의 DOM. fr "

+0

'최상의 해결책'이 아닙니다. – EJP

+0

좋아요. 나는 최고를 제거합니다 ... – JPBlanc

0

NO-OP 동작의 경우 root DSE을 검색하면됩니다. 그것은 서버의 메모리에 있어야합니다. BIND 요청 W 응답에 액세스 할 수있는 경우, 권한 ID 요청 제어를 BIND 요청에 포함 할 수 있습니다. 서버가이 요청 제어를 지원하면 (루트 DSE에 나열 됨) 서버는 BIND 응답에 권한 ID 응답 제어를 포함합니다. 이 응답 제어는 연결의 인증 ID입니다.

관련 문제