Spring LDAP – Melihat / Seleksi Account di OpenLDAP

Posting ini berkaitan dengan proyek akhir yang sedang dikerjakan, sambil ngerjakan proyek akhir sekalian sebagian hasilnya diposting aja. :D.

Kali ini kita akan buat proyek netbeans untuk melihat data yang ada di OpenLDAP. Untuk penjelasan lebih jelas tentang OpenLDAP klik link ini. Kebutuhan yang diperlukan untuk membuat proyek ini adalah :

  1. Netbeans IDE 7.1
  2. Spring Framework 3.0.6
  3. Spring LDAP 1.3.1
  4. OpenLDAP Server

Kita buat project Netbeans dulu dan masukkan library yang diperlukan seperti yang telah disebutkan diatas. Jika temen2 punya library yang lebih baru, bisa dipakai juga. Kemudian kita buat kelas entity-nya dulu.


package lutfi.ldap.entity;

/**
*
* @author AchmadLutfi
*/
public class LDAPContact {
String commonName;
String lastName;
String description;

public String getCommonName() {
return commonName;
}
public void setCommonName(String commonName) {
this.commonName = commonName;
}

public String getDescription() {
return description;
}

public void setDescription(String description) {
this.description = description;
}

public String getLastName() {
return lastName;
}

public void setLastName(String lastName) {
this.lastName = lastName;
}

@Override
public String toString() {
StringBuilder contactDTOStr = new StringBuilder("Person=[");
contactDTOStr.append(" Common Name = ").append(commonName);
contactDTOStr.append(", Last Name = ").append(lastName);
contactDTOStr.append(", Description = ").append(description);
contactDTOStr.append(" ]");
return contactDTOStr.toString();
}
}

[/soucecode]

Setelah entity kita buat, waktunya kita buat kelas mapper yang akan memetakan data yang didapat dari OpenLDAP kedalam kelas entity.



package lutfi.ldap.mapper;

import javax.naming.NamingException;
import javax.naming.directory.Attributes;
import lutfi.ldap.entity.LDAPContact;
import org.springframework.ldap.core.AttributesMapper;

/**
*
* @author AchmadLutfi
*/
public class ContactAttributeMapper implements AttributesMapper{
@Override
public Object mapFromAttributes(Attributes attributes) throws NamingException {
LDAPContact contactDTO = new LDAPContact();
String commonName = (String)attributes.get("cn").get();
if(commonName != null)
contactDTO.setCommonName(commonName);

String lastName = (String)attributes.get("sn").get();
if(lastName != null)
contactDTO.setLastName(lastName);

return contactDTO;
}
}

[/soucecode]

Karena kita memakai Spring, maka jangan lupa untuk membuat file xml untuk konfigurasi Springnya.



<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd"
xmlns:util="http://www.springframework.org/schema/util">

<bean id="contextSource">
<property name="url" value="ldap://192.168.56.5:389" />
<property name="base" value="dc=poliwangi,dc=ac,dc=id" />
<property name="userDn" value="cn=admin,dc=poliwangi,dc=ac,dc=id" />
<property name="password" value="1" />
</bean>
<bean id="ldapTemplate">
<constructor-arg ref="contextSource" />
</bean>
<bean id="ldapContact">
<property name="ldapTemplate" ref="ldapTemplate" />
</bean>
</beans>

Jika langkah-langkah diatas sudah selesai dikerjakan, maka langkah selanjutnya kita membuat kelas DAO, karena kelas cukup panjang maka code yang ditampilkan hanya sebagian saja. Berikut ini kode untuk melihat semua data yang terdapat di OpenLDAP.


private LdapTemplate ldapTemplate;

public void setLdapTemplate(LdapTemplate ldapTemplate) {
this.ldapTemplate = ldapTemplate;
}

public List getAllContactNames() {
return ldapTemplate.search("", "(objectclass=posixAccount)", new ContactAttributeMapper());
}

Kemudian kita buat kelas SpringFrameworkLDAPClient.java yang mempunyai method main untuk menjalankan kode program yang telah kita buat tadi.


package lutfi.ldap;

import java.util.List;
import lutfi.ldap.dao.LDAPContactDAO;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
import org.springframework.dao.DataAccessException;

/**
*
* @author AchmadLutfi
*/
public class SpringFrameworkLDAPClient {
public static void main(String[] args) {
try {
Resource resource = new ClassPathResource("lutfi/ldap/springldap.xml");
BeanFactory factory = new XmlBeanFactory(resource);

LDAPContactDAO ldapContact = (LDAPContactDAO)factory.getBean("ldapContact");

List contactList = ldapContact.getAllContactNames();
for( int i = 0 ; i < contactList.size(); i++){
System.out.println("Contact Name " + contactList.get(i));
}
} catch (DataAccessException e) {
System.out.println("Error occured " + e.getCause());
}
}
}

Sekarang waktunya kita jalankan untuk mencoba kode yang telah ditulis tadi.

Dari gambar diatas kita tahu kalau project netbeans yang kita buat berhasil mendapatkan data dari OpenLDAP. Dengan ini project netbeans untuk malakukan seleksi / mendapatkan data dari OpenLDAP telah selesai.

Source code project netbeans ini dapat didownload di : http://achmad-project.googlecode.com/files/SpringLDAP.7z

  1. #1 by ida on October 14, 2012 - 3:41 pm

    Kurang faham
    .
    pkoke
    tetap
    keep moving forwaRd kata pak.lutfy
    🙂

    • #2 by Achmad on October 20, 2012 - 10:09 am

      Weh2… sopo iki? hehehe

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d bloggers like this: