Spring LDAP

org.springframework.ldap.support
Class LdapUtils

java.lang.Object
  extended by org.springframework.ldap.support.LdapUtils

public final class LdapUtils
extends Object

Generic utility methods for working with LDAP. Mainly for internal use within the framework, but also useful for custom code.

Since:
1.2
Author:
Ulrik Sandberg

Method Summary
static void closeContext(DirContext context)
          Close the given JNDI Context and ignore any thrown exception.
static void collectAttributeValues(Attributes attributes, String name, Collection collection)
          Collect all the values of a the specified attribute from the supplied Attributes.
static String convertBinarySidToString(byte[] sid)
          Converts a binary SID to its String representation, according to the algorithm described here.
static String convertCompositeNameToString(CompositeName compositeName)
          Converts a CompositeName to a String in a way that avoids escaping problems, such as the dreaded "triple backslash" problem.
static NamingException convertLdapException(NamingException ex)
          Convert the specified checked NamingException to a Spring LDAP runtime NamingException equivalent.
static byte[] convertStringSidToBinary(String string)
          Converts a String SID to its binary representation, according to the algorithm described here.
static Class getActualTargetClass(DirContext context)
          Get the actual class of the supplied DirContext instance; LdapContext or DirContext.
static void iterateAttributeValues(Attribute attribute, AttributeValueCallbackHandler callbackHandler)
          Iterate through all the values of the specified Attribute calling back to the specified callbackHandler.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

closeContext

public static void closeContext(DirContext context)
Close the given JNDI Context and ignore any thrown exception. This is useful for typical finally blocks in JNDI code.

Parameters:
context - the JNDI Context to close (may be null)

convertLdapException

public static NamingException convertLdapException(NamingException ex)
Convert the specified checked NamingException to a Spring LDAP runtime NamingException equivalent.

Parameters:
ex - the original checked NamingException to convert
Returns:
the Spring LDAP runtime NamingException wrapping the given exception

getActualTargetClass

public static Class getActualTargetClass(DirContext context)
Get the actual class of the supplied DirContext instance; LdapContext or DirContext.

Parameters:
context - the DirContext instance to check.
Returns:
LdapContext.class if context is an LdapContext, DirContext.class otherwise.

collectAttributeValues

public static void collectAttributeValues(Attributes attributes,
                                          String name,
                                          Collection collection)
Collect all the values of a the specified attribute from the supplied Attributes.

Parameters:
attributes - The Attributes; not null.
name - The name of the Attribute to get values for.
collection - the collection to collect the values in.
Throws:
NoSuchAttributeException - if no attribute with the specified name exists.
Since:
1.3

iterateAttributeValues

public static void iterateAttributeValues(Attribute attribute,
                                          AttributeValueCallbackHandler callbackHandler)
Iterate through all the values of the specified Attribute calling back to the specified callbackHandler.

Parameters:
attribute - the Attribute to work with; not null.
callbackHandler - the callbackHandler; not null.
Since:
1.3

convertCompositeNameToString

public static String convertCompositeNameToString(CompositeName compositeName)
Converts a CompositeName to a String in a way that avoids escaping problems, such as the dreaded "triple backslash" problem.

Parameters:
compositeName - The CompositeName to convert
Returns:
String containing the String representation of name

convertBinarySidToString

public static String convertBinarySidToString(byte[] sid)
Converts a binary SID to its String representation, according to the algorithm described here. Thanks to Eyal Lupu for algorithmic inspiration.
 If you have a SID like S-a-b-c-d-e-f-g-...
 
 Then the bytes are
 a      (revision)
 N      (number of dashes minus two)
 bbbbbb (six bytes of "b" treated as a 48-bit number in big-endian format)
 cccc   (four bytes of "c" treated as a 32-bit number in little-endian format)
 dddd   (four bytes of "d" treated as a 32-bit number in little-endian format)
 eeee   (four bytes of "e" treated as a 32-bit number in little-endian format)
 ffff   (four bytes of "f" treated as a 32-bit number in little-endian format)
 etc.   
 
 So for example, if your SID is S-1-5-21-2127521184-1604012920-1887927527-72713, then your raw hex SID is
 
 010500000000000515000000A065CF7E784B9B5FE77C8770091C0100
 
 This breaks down as follows:
 01     S-1
 05     (seven dashes, seven minus two = 5)
 000000000005   (5 = 0x000000000005, big-endian)
 15000000       (21 = 0x00000015, little-endian)
 A065CF7E       (2127521184 = 0x7ECF65A0, little-endian)
 784B9B5F       (1604012920 = 0x5F9B4B78, little-endian)
 E77C8770       (1887927527 = 0X70877CE7, little-endian)
 091C0100       (72713 = 0x00011c09, little-endian)
 
 S-1-   version number (SID_REVISION)
 -5-    SECURITY_NT_AUTHORITY
 -21-   SECURITY_NT_NON_UNIQUE
 -...-...-...-  these identify the machine that issued the SID
 72713  unique user id on the machine
 

Parameters:
sid - binary SID in byte array format
Returns:
String version of the given sid
Since:
1.3.1

convertStringSidToBinary

public static byte[] convertStringSidToBinary(String string)
Converts a String SID to its binary representation, according to the algorithm described here.

Parameters:
string - SID in readable format
Returns:
Binary version of the given sid
Since:
1.3.1
See Also:
convertBinarySidToString(byte[])

Spring LDAP