2009-09-21 3 views
2

그래서 여기 상황이 있습니다. 우리는 사용자의 역할/그룹 구성원 자격 등에 대한 활성 디렉토리를 쿼리 할 수 ​​있기를 원합니다. 이제 표준 Java API (javax.naming)를 사용하여 이미 수행 할 수 있지만 사용자 이름, 도메인 서버 이름/주소, 암호를 입력해야합니다. 또한 사용자의 권한이 제한되어 있으므로 멋진 관리 도구에 외부 통화를 사용할 수 없습니다.Java : 최소한의 사용자 정보로 Active Directory 정보를 쿼리하십시오.

자바에서는 사용자 이름과 도메인 서버 이름/주소만으로 정보를 얻을 수있는 방법이 있습니까? 또한 타사 패키지를 열어서이 작업을 수행 할 수 있습니다. 또는이를 허용하기 위해 AD에서 구성 할 항목에 대한 정보를 제공하거나 알려주십시오.

희망적으로는 의미가 있습니다. 나는 AD 구루가 아니기 때문에 더 많은 정보를 얻으실 수 있습니다.

+0

간단한 설명 :이 결정은 우리가 선호하는 솔루션이 아니므로 사용자가 자신의 암호 (또는 다른 필수 인수를 사용해야하는 이유)를 강요하지 않는 보안 위험이 있다고 주장 할 수 있다면 우리 고객에게 "힘든 noogies." 백업이 필요합니다. – Dave

답변

1

좋아, 다른 사람들이 나에게 말한 내용과 여기에 제공된 단서와 관련하여 방대한 연구를 한 결과, 내 코드에서 로그인 정보로 "특수 사용자"를 사용하는 것으로 보입니다. 투명합니다. 사용자에게 제공 한 다음 자격 증명을 사용하여 쿼리를 수행합니다. 따라서 코드에서 "특수 사용자"를 사용하여 바인딩 한 다음 현재 사용자를 쿼리 매개 변수 (sAMAccountName = username)로 사용하여 쿼리를 수행합니다.

입력 해 주셔서 감사합니다.

+1

다른 사람의 upvoted 대답을 그냥 recapitulates 자신의 대답을 수락 그래서 나쁜 형태로 간주됩니다. 그냥 참고하시기 바랍니다. –

6

먼저 로그인해야하는 문제는 광고에서 익명 쿼리를 허용하지 않기 때문입니다. 데이터베이스를 쿼리하기 전에 쿼리를 실행할 수있는 충분한 권한을 가진 유효한 사용자로 로그인해야합니다 (LDAP 용어로 "바인딩").

AD 관리자가 기꺼이한다면 데이터베이스를 바인딩하고 쿼리 할 수있는 특수 사용자 (우리는 "ldapquery"라고 부름)를 만들 수 있습니다. 해당 사용자의 사용자 ID와 암호는 코드에서 구성 값이됩니다.

+0

그렇다면이 특수 사용자를 사용하여 현재 사용자의 정보를 어떻게 쿼리합니까? – Dave

+0

비슷한 설정이 있습니다. 나는이 대답을 초. –

+0

또한 사용자가 이미 컴퓨터에 로그온하여 Windows 로그인 메커니즘을 통해 인증되었다고 가정합니다. 유일한 문제는 왜 암호를 다시 입력해야하는지 알지 못합니다 (환경 변수에서 사용자 이름을 얻을 수 있음). 따라서 적절한 권한을 가진 "특수 사용자"가 있어도 어떻게 저에게 로그인하고 "특수 사용자"를 사용하여 자신에 대한 정보를 찾을 수 있습니까? – Dave