2011-09-19 2 views
0

"사용자 이름"과 다른 Windows ID를 사용하여 사용자를 인증해야합니다. 예 : windows ID는 jSmith이지만 사용자 이름은 "Joe Smith"입니다. Windows ID를 기반으로 Joe Smith를 찾아서 그가 특정 그룹의 구성원인지 확인해야합니다.LDAP : Windows ID를 가진 사용자를 검색하는 방법

Windows ID가 사용자의 속성이라고 가정하지만 LDAP를 처음 사용하고 모든 사용자의 특정 속성을 검색하는 방법을 알지 못합니다.

답변

0

인증을 위해 Windows ID를 말하면 LDAP가 실제로 Active Directory라고 가정합니다.

그냥 Active Directory에 LanId하여 사용자를 찾으려면

:

  1. 하는 것은 관리/서비스 계정의 사용자 이름과 암호를 사용하여 활성 연결. 다음 필터를 사용하여 사용자에 대한
  2. 검색 : "(&(objectClass=user)(sAMAccountName=" + searchUsername + "))"

당신이 사용자 인증을 할 경우

Hashtable environment = new Hashtable(); 
environment.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");// can make it variable, not needed so far 
environment.put(Context.SECURITY_AUTHENTICATION, "simple"); // can make it variable, not needed so far 
environment.put(Context.PROVIDER_URL, url); 
environment.put(Context.SECURITY_PRINCIPAL, username + "@" + domain); // This is specific to AD 
environment.put(Context.SECURITY_CREDENTIALS, password); 

return new InitialLdapContext(environment, null); 

위의 코드는 예외없이 성공적으로 실행되면 사용자가 올바른 사용자 이름을 제공하는 의미/암호

+0

좋아,이 검색 필터를했는데 잘됐다. (분명히 어떤 용어는 이름을 만들었지 만 당신은 그 아이디어를 얻는다.) "(& (ObjectCategoryName = person) (memberOf = CN = Blah, OU = Company-Users, DC = BlahBlah, DC = local))"이제 암호를 필터에 추가하고 싶습니다. 누구든지 암호의 "핵심"이 무엇인지 압니까? 예 : (passwordKey = "MyDogName13") passwordKey is ...이 동일한 주제에 ... 사용 가능한 속성 (키 이름) 목록을 다시 얻을 수있는 방법이 있습니까? 감사. – ClimberChick

+0

패스워드를 가져 와서 매칭하여 인증을 할 수 있다고해도 위에서 언급 한 바와 같이'bind authentication'을 사용할 것을 권장합니다. https://github.com/kdabir/active-directory-lookup에서 얻을 수있는 인증 및 속성 검색을 위해 Active Directory를 사용하는 간단한 api를 만들었습니다. (오늘 체크인 했으니 README를 쓸 것입니다. 곧) – kunal

관련 문제