5 Mayıs 2017 Cuma

SpringLDAP LdapTemplate Sınıfı

Giriş
Şu satırı dahil ederiz
import org.springframework.ldap.core.LdapTemplate;
Maven
Şu satırı dahil ederiz
<dependency>
  <groupId>org.springframework.ldap</groupId>
  <artifactId>spring-ldap-core</artifactId>
</dependency>
Tanımlama
Şöyle yaparız.
<ldap:context-source
    id="ldapContextSource"
    url="ldap://ldaphost:389"
    username="cn=ldaptestadmin,cn=Administrators,cn=config"
    password="abcxyz"
    base="dc=studentBase,dc=example,dc=com"/>

<ldap:ldap-template id="ldapTemplate" context-source-
    ref="ldapContextSource"/>
create metodu
Örnek ver

authenticate metodu
Örnek
Şöyle yaparız
import org.springframework.ldap.core.LdapTemplate;
import org.springframework.ldap.core.support.LdapContextSource;
import org.springframework.ldap.filter.EqualsFilter;
import org.springframework.ldap.filter.Filter;
import org.springframework.ldap.support.LdapUtils;

LdapContextSource contextSource = new LdapContextSource();
contextSource.setUrl("ldap://localhost:8389/dc=springframework,dc=org");
contextSource.setAnonymousReadOnly(true);
contextSource.setUserDn("uid={0},ou=people");
contextSource.afterPropertiesSet();

LdapTemplate ldapTemplate = new LdapTemplate(contextSource);

Filter filter = new EqualsFilter("uid", "myname");
Boolean authenticated = ldapTemplate.authenticate(LdapUtils.emptyLdapName(),
filter.encode(), "mypassword");
if (authenticated) {
  ...
}
DefaultIncrementalAttributesMapper İle Kullanımı
Açıklaması şöyle
If you know the distinguished name (dn), you can use the DefaultIncrementAttributesMapper to look up for multi-valued attributes (eg. the mail attribute).
Örnek
Şöyle yaparız
@Service class LdapQueryService( private val ldapTemplate: LdapTemplate ) { private fun getMultiValuedAttributesWithDefaultIncrementAttributesMapper(dn: String, attr: String): List<String> { val attributes = DefaultIncrementalAttributesMapper.lookupAttributes(ldapTemplate, dn, attr) val results = ArrayList<String>() for (i in 0 until attributes.get(attr).size()) { results.add(attributes.get(attr)[i].toString()) } return results } fun query(): List<String> { val dn = "cn=Amanda,ou=Users" val attr = "mail" val emails = getMultiValuedAttributesWithDefaultIncrementAttributesMapper(dn, attr) return emails } }
search metodu - AttributesMapper
Açıklaması şöyle
Internally, LdapTemplate iterates over all entries found, calling the given AttributesMapper for each entry, and collects the results in a list. The list is then returned by the search method.
Örnek
Şöyle yaparız
@Service class LdapQueryService( private val ldapTemplate: LdapTemplate ) { fun queryWithAttributeMapper(userId: String): List<User> { return ldapTemplate.search("ou=Users", "uid=$userId", AttributesMapper { attributes -> val id = attributes.get("uid").get().toString() val name = attributes.get("displayname").get().toString() val emails = attributes.get("mail").all.toList() as List<String> User(userId = id, name = name, emails = emails) }) } }
search metodu - ContextMapper
Açıklaması şöyle
Whenever an entry is found in the LDAP tree, its attributes and Distinguished Name (DN) will be used by Spring LDAP to construct a DirContextAdapter. This enables us to use a ContextMapper to transform the found values.
Açıklaması şöyle
The advantage of the ContextMapper is that

- it handles NullPointerException by returning null instead of throwing exceptions.
- it simplifies attributes retrieval operations (especially for multi-value attributes) with getStringAttribute() and getStringAttributes() methods.
- it allows you to retrieve distinguished name (dn), schemas and object classes.
Örnek
Şöyle yaparız
@Service class LdapQueryService( private val ldapTemplate: LdapTemplate ) { fun queryWithContextMapper(userId: String): List<User> { return ldapTemplate.search("ou=Users", "uid=$userId", object: AbstractContextMapper<User>() { override fun doMapFromContext(ctx: DirContextOperations): AdUser { val dn = ctx.dn val id = ctx.getStringAttribute("uid") val name = ctx.getStringAttribute("displayname") val emails = ctx.getStringAttributes("mail").toList() return User(id, name, emails) } }) } }


Hiç yorum yok:

Yorum Gönder