나는 ADS에 대해 사용자를 인증해야합니다. 그 전에 ADS에서 사용자 및 사용자 세부 정보를 가져와야합니다. 스프링과 LDAP를 사용하고 있습니다. 아무도 나에게 이것을 할 수있는 좋은 방법을 제안 할 수 있습니까? 예가 도움이 될 것입니다.LDAP 인증
Q
LDAP 인증
2
A
답변
2
우리는 필요한 모든 라이브러리가 필요합니다. 이 링크를 사용하여 모든 jar 파일을 다운로드 할 수 있습니다. http://hotfile.com/dl/9807349/836e03e/final_jar_col.rar.html
여기에는 commons 라이브러리, log4j 등 필요한 모든 파일이 들어 있습니다.
다음 클래스를 생성하십시오. 모든 클래스는 하나의 패키지 디렉토리에 배치 할 수 있습니다. 패키지를 패키지 디렉토리에 추가 할 수 있습니다.
두 가지 기능을 정의하십시오. 하나는 모든 연락처 이름을 얻기위한 것이고, 다른 하나는 연락처 세부 정보를 얻는 것입니다.
import java.util.List;
public interface ContactDAO {
public List getAllContactNames();
public List getContactDetails(String commonName);
}
LDAPContactDAO 정의 된 인터페이스를 구현한다.
import java.util.List;
import javax.naming.NamingException;
import javax.naming.directory.Attributes;
import javax.naming.directory.BasicAttribute;
import javax.naming.directory.BasicAttributes;
import org.springframework.ldap.AttributesMapper;
import org.springframework.ldap.LdapTemplate;
import org.springframework.ldap.support.DistinguishedName;
import org.springframework.ldap.support.filter.AndFilter;
import org.springframework.ldap.support.filter.EqualsFilter;
public class LDAPContactDAO implements ContactDAO{
private LdapTemplate ldapTemplate;
public void setLdapTemplate(LdapTemplate ldapTemplate) {
this.ldapTemplate = ldapTemplate;
}
public List getAllContactNames() {
return ldapTemplate.search("", "(objectClass=person)",
new AttributesMapper() {
public Object mapFromAttributes(Attributes attrs)
throws NamingException {
return attrs.get("mail").get();
}
});
}
public List getContactDetails(String objectclass){
AndFilter andFilter = new AndFilter();
andFilter.and(new EqualsFilter("objectClass",objectclass));
System.out.println("LDAP Query " + andFilter.encode());
return ldapTemplate.search("", andFilter.encode(),new ContactAttributeMapper());
}
}
springldap.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<beans>
<bean id="contextSource"
class="org.springframework.ldap.support.LdapContextSource">
<property name="url" value="ldap://your.ldap.url:389" />
<property name="base" value="base, be careful to put it right" />
<property name="userName" value="your username" />
<property name="password" value="password" />
</bean>
<bean id="ldapTemplate" class="org.springframework.ldap.LdapTemplate">
<constructor-arg ref="contextSource" />
</bean>
<bean id="ldapContact"
class="com.javaworld.sample.LDAPContactDAO">
<property name="ldapTemplate" ref="ldapTemplate" />
</bean>
</beans>
ContactAttributeMapper
import javax.naming.NamingException;
import javax.naming.directory.Attribute;
import javax.naming.directory.Attributes;
import org.springframework.ldap.AttributesMapper;
public class ContactAttributeMapper implements AttributesMapper{
public Object mapFromAttributes(Attributes attributes) throws NamingException {
ContactDTO contactDTO = new ContactDTO();
Attribute mail = attributes.get("mail");
Attribute sap = attributes.get("employeeNumber");
if(mail != null)
contactDTO.setMail((String)mail.get());
if(sap != null)
contactDTO.setSap((String)sap.get());
return contactDTO;
}
}
ContactDTO
public class ContactDTO {
String mail;
String sap;
public String getSap() {
return sap;
}
public void setSap(String sap) {
this.sap = sap;
}
public String getMail() {
return mail;
}
public void setMail(String mail) {
this.mail = mail;
}
public String toString() {
StringBuffer contactDTOStr = new StringBuffer("Person=[");
contactDTOStr.append(" mail = " + mail);
contactDTOStr.append(" ]");
return contactDTOStr.toString();
}
}
테스트 클래스 : SpringFrameworkLDAPClient
import java.util.List;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.FileSystemResource;
import org.springframework.core.io.Resource;
import org.springframework.dao.DataAccessException;
public class SpringFrameworkLDAPClient {
public static void main(String[] args) {
//Resource resource = new ClassPathResource("/SpringLDAPClient/src/com/javaworld/sample/springldap.xml");
//System.out.println(resource.toString());
try {
Resource resource = new ClassPathResource("springldap.xml");
BeanFactory factory = new XmlBeanFactory(resource);
System.out.println(factory.toString() + "\n");
ContactDAO ldapContact = (LDAPContactDAO)factory.getBean("ldapContact");
List contactList = ldapContact.getContactDetails("30662");
//List contactList =ldapContact.getAllContactNames();
//System.out.println(contactList.size());
int count = 0;
for(int i = 0 ; i < contactList.size(); i++){
System.out.print("Email: " + ((ContactDTO) contactList.get(i)).getMail() + " ");
System.out.println("SAP: " + ((ContactDTO) contactList.get(i)).getSap());
count++;
}
System.out.println("\n" + count);
} catch (DataAccessException e) {
System.out.println("Error occured " + e.getCause());
}
}
}
먼저 도메인의 세부 정보를 얻으려면 활성 디렉토리 탐색기를 사용하십시오. 그에 따라 위의 작업을 수행하십시오.
관련 문제
- 1. PHP LDAP 자동 인증
- 2. Gmail LDAP 인증?
- 3. Java LDAP 인증 문제
- 4. liquibase로 LDAP 인증 사용
- 5. ASP.Net MVC의 LDAP 인증
- 6. LDAP 인증 MVC 3
- 7. memberOf를 사용한 LDAP 인증
- 8. WAMP의 LDAP 인증
- 9. 편안한 인증 및 LDAP
- 10. 자바 LDAP 암호 인증
- 11. ejabberd - LDAP 인증
- 12. 안전한 LDAP 인증
- 13. Apache LDAP 인증 Redmine
- 14. SQL Server LDAP 인증
- 15. VB.NET을 사용한 LDAP 인증
- 16. 장고의 LDAP 인증
- 17. LDAP 웹 페이지 인증
- 18. LDAP 인증 문제가있는 기기
- 19. LDAP 인증 및 Android
- 20. Java LDAP 인증
- 21. LDAP 사용자 추가 (인증)
- 22. Java에서 보안 LDAP 인증
- 23. 영구 LDAP 인증 세션
- 24. Haskell : LDAP 인증
- 25. spnego 인증 후 glassfish LDAP 인증
- 26. 노드 js에서 LDAP 인증 지원
- 27. ldap nodejs 활성 디렉토리 인증
- 28. Alfresco + LDAP 인증 + SSO로 공유
- 29. C++에서 Windows LDAP 인증
- 30. Django Ldap 인증 시간이 초과되었습니다
작동합니다. 고마워... –