인증을 위해 Windows ID를 말하면 LDAP가 실제로 Active Directory라고 가정합니다.
그냥 Active Directory에 LanId하여 사용자를 찾으려면
:
- 하는 것은 관리/서비스 계정의 사용자 이름과 암호를 사용하여 활성 연결. 다음 필터를 사용하여 사용자에 대한
- 검색 :
"(&(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);
위의 코드는 예외없이 성공적으로 실행되면 사용자가 올바른 사용자 이름을 제공하는 의미/암호
좋아,이 검색 필터를했는데 잘됐다. (분명히 어떤 용어는 이름을 만들었지 만 당신은 그 아이디어를 얻는다.) "(& (ObjectCategoryName = person) (memberOf = CN = Blah, OU = Company-Users, DC = BlahBlah, DC = local))"이제 암호를 필터에 추가하고 싶습니다. 누구든지 암호의 "핵심"이 무엇인지 압니까? 예 : (passwordKey = "MyDogName13") passwordKey is ...이 동일한 주제에 ... 사용 가능한 속성 (키 이름) 목록을 다시 얻을 수있는 방법이 있습니까? 감사. – ClimberChick
패스워드를 가져 와서 매칭하여 인증을 할 수 있다고해도 위에서 언급 한 바와 같이'bind authentication'을 사용할 것을 권장합니다. https://github.com/kdabir/active-directory-lookup에서 얻을 수있는 인증 및 속성 검색을 위해 Active Directory를 사용하는 간단한 api를 만들었습니다. (오늘 체크인 했으니 README를 쓸 것입니다. 곧) – kunal