2012-04-23 4 views
0

수정해야하는 내부 앱에 기존 코드가 있습니다. 모든 것을 다시하기 전에 인증하는 사용자에 따라 OU가 달라질 수있는 AD 바인딩을 쉽게 수행 할 수 있습니다. 설정은 꽤 표준입니다.OU가 가변적 인 Perl로 Active Directory에 바인딩

my($mesg) = $ldap->bind ("cn=$uid,ou=Workers,ou=Domain Users,dc=something,dc=com", password => "$psswd"); 

모든 사용자가 "근로자"OU는 아닙니다. 일부는 다른 OU에 있습니다. 기본적으로 궁금한 점은 perl에서 AD에 바인딩하는 "if-then-else"루틴이 있는지입니다. 나는 그것을 피할 수 있다면 이것을 검색 할 목적으로 제 3 자 계정을 설정하지 않기를 바랄 것이다. 그러나 내가 읽은 거의 모든 문서는이 로그인 방법을 가리키는 것으로 보인다. 어떤 아이디어 나 제안?

+0

실제 문제가 여기에 무엇 : 바인드 요청이 전송되기 전에 $distinguishedName라는 변수를 구축, 바인드 요청, 처리 응답을 전송, 및 응답 컨트롤을 처리 응답에 포함? 코드에 이미 변수 $ uid가 표시되어 있습니다. 변수 $ ou를 갖는 것이 어떤 문제입니까? – EJP

+0

인증하는 사용자가 다른 OU에있을 수 있습니다. 그들이 인증 할 수 있도록 OU가 무엇인지 명시 할 필요가 있습니다. 그게 내가하는 걸 원치 않는 추가 단계입니다. – oljones

+0

즉, '가변적 인 OU'를 원하지 않거나, 가능한 많은 OU 또는 가능한 모든 OU에 대해 필터링하고 싶습니까? – EJP

답변

1

AD에 전체 DN을 지정할 필요는 없습니다. 사용자 이름이 충분해야합니다.

+0

($ uid, password => $ psswd)로 변경되었습니다. "LDAP_INVALID_CREDENTIALS : 잘못된 암호가 제공되었거나 SASL 자격 증명을 처리 할 수 ​​없어서"오류가 발생했습니다. 암호를 세 번 확인했습니다. 작동하지 않는 것 같습니다. LDAP 또는 AD 바인딩과 관련이 있습니까? – oljones

+0

이것은 Windows 작업입니다. Windows RSAT/support 도구의 ldp.exe를 사용하여 바인드의 유효성을 검증 할 수 있습니다. 작동 시키려면 접두사 \을 사용해야 할 수도 있습니다. –

+0

'something.com \\ $ uid'및 '$ uid \ @ something.com'으로 시도했습니다. 둘 다 아무 소용이 없습니다. 생각해 줘서 고마워. – oljones

1

매개 변수로 고유 이름 및 고유 이름에 대한 자격 증명을 매개 변수로 사용하는 "간단한"바인드 요청이라고합니다. 0 개 이상의 요청 컨트롤이 바인드 요청에 포함될 수 있습니다.

my $namingContext = "ou=domain users,dc=something,dc=com"; 
my $distinguishedName = sprintf "%s,%s,%s",$cn,$ou,$namingContext; 
my $bindResult = $ldap->bind($distinguishedName,$credentials); 
# handle any response controls attached to the bind response ... 
+0

제안 해 주셔서 감사합니다. 이 방법을 사용하면 첫 번째 바인딩 결과가 유효하지 않은 경우 OU를 변경하고 다시 바인드 할 수 있습니까? – oljones

+0

예. 성공적인 바인드 요청에 의해 인증 상태가 설정 될 때까지 연결은 인증되지 않습니다. LDAP 클라이언트가 LDAPv3을 사용하는 경우, 연결 인증 상태는 연속적인 성공적인 바인드 요청마다 변경되며 서버가 설정 한 제한 사항에 따라 달라집니다. LDAP 클라이언트가 연결의 인증 상태에 대한 정보가 필요한 경우 [Who Am I?] (http://tools.ietf.org/html/rfc4532) 확장 작업을 사용하여 인증 상태를 검색 할 수 있습니다. 서버는 확장 된 작업을 지원하고 그 사용을 승인합니다. –

관련 문제