|
Spring LDAP | ||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
java.lang.Objectorg.springframework.ldap.support.LdapUtils
public final class LdapUtils
Generic utility methods for working with LDAP. Mainly for internal use within the framework, but also useful for custom code.
| 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<Object> collection)
Collect all the values of a the specified attribute from the supplied Attributes. |
|
static
|
collectAttributeValues(Attributes attributes,
String name,
Collection<T> collection,
Class<T> clazz)
Collect all the values of a the specified attribute from the supplied Attributes as the specified class. |
|
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 LdapName |
emptyLdapName()
Construct a new, empty LdapName instance. |
|
static Class |
getActualTargetClass(DirContext context)
Get the actual class of the supplied DirContext instance; LdapContext or DirContext. |
|
static Rdn |
getRdn(Name name,
String key)
Find the Rdn with the requested key in the supplied Name. |
|
static String |
getStringValue(Name name,
int index)
Get the value of the Rdn at the requested index in the supplied Name as a String. |
|
static String |
getStringValue(Name name,
String key)
Get the value of the Rdn with the requested key in the supplied Name as a String. |
|
static Object |
getValue(Name name,
int index)
Get the value of the Rdn at the requested index in the supplied Name. |
|
static Object |
getValue(Name name,
String key)
Get the value of the Rdn with the requested key in the supplied Name. |
|
static void |
iterateAttributeValues(Attribute attribute,
AttributeValueCallbackHandler callbackHandler)
Iterate through all the values of the specified Attribute calling back to the specified callbackHandler. |
|
static LdapName |
newLdapName(Name name)
Construct a new LdapName instance from the supplied Name instance. |
|
static LdapName |
newLdapName(String distinguishedName)
Construct a new LdapName instance from the supplied distinguished name string. |
|
static LdapName |
prepend(Name dn,
Name pathToPrepend)
Prepend the supplied path in the beginning the specified Name if the name instance starts with
path. |
|
static LdapName |
removeFirst(Name dn,
Name pathToRemove)
Remove the supplied path from the beginning the specified Name if the name instance starts with
path. |
|
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Method Detail |
|---|
public static void closeContext(DirContext context)
finally blocks in JNDI code.
context - the JNDI Context to close (may be null)public static NamingException convertLdapException(NamingException ex)
NamingException to a Spring LDAP runtime
NamingException
equivalent.
ex - the original checked NamingException to convert
public static Class getActualTargetClass(DirContext context)
context - the DirContext instance to check.
public static void collectAttributeValues(Attributes attributes,
String name,
Collection<Object> collection)
attributes - The Attributes; not null.name - The name of the Attribute to get values for.collection - the collection to collect the values in.
NoSuchAttributeException - if no attribute with the specified name
exists.
public static <T> void collectAttributeValues(Attributes attributes,
String name,
Collection<T> collection,
Class<T> clazz)
attributes - The Attributes; not null.name - The name of the Attribute to get values for.collection - the collection to collect the values in.clazz - the class of the collected attribute values
NoSuchAttributeException - if no attribute with the specified name
exists.
IllegalArgumentException - if an attribute value cannot be cast to the specified class.
public static void iterateAttributeValues(Attribute attribute,
AttributeValueCallbackHandler callbackHandler)
attribute - the Attribute to work with; not null.callbackHandler - the callbackHandler; not null.public static String convertCompositeNameToString(CompositeName compositeName)
compositeName - The CompositeName to convert
namepublic static LdapName newLdapName(Name name)
convertCompositeNameToString(javax.naming.CompositeName); for all other Name
implementations, new LdapName instances are constructed using LdapName.addAll(int, javax.naming.Name).
name - the Name instance to convert to LdapName, not null.
InvalidNameException - to wrap any InvalidNameExceptions thrown by LdapName.public static LdapName newLdapName(String distinguishedName)
distinguishedName - the string to parse for constructing an LdapName instance.
InvalidNameException - to wrap any InvalidNameExceptions thrown by LdapName.
public static LdapName removeFirst(Name dn,
Name pathToRemove)
Name if the name instance starts with
path. Useful for stripping base path suffix from a
Name. The original Name will not be affected.
dn - the dn to strip from.pathToRemove - the path to remove from the beginning the dn instance.
public static LdapName prepend(Name dn,
Name pathToPrepend)
Name if the name instance starts with
path. The original Name will not be affected.
dn - the dn to strip from.pathToPrepend - the path to prepend in the beginning of the dn.
public static LdapName emptyLdapName()
public static Rdn getRdn(Name name,
String key)
name - the Name in which to search for the key.key - the attribute key to search for.
NoSuchElementException - if no corresponding entry is found.
public static Object getValue(Name name,
String key)
name - the Name in which to search for the key.key - the attribute key to search for.
NoSuchElementException - if no corresponding entry is found.
public static Object getValue(Name name,
int index)
name - the Name to work on.index - The 0-based index of the rdn value to retrieve. Must be in the range [0,size()).
IndexOutOfBoundsException - if index is outside the specified range.
public static String getStringValue(Name name,
int index)
name - the Name to work on.index - The 0-based index of the rdn value to retrieve. Must be in the range [0,size()).
IndexOutOfBoundsException - if index is outside the specified range.
ClassCastException - if the value of the requested component is not a String.
public static String getStringValue(Name name,
String key)
name - the Name in which to search for the key.key - the attribute key to search for.
NoSuchElementException - if no corresponding entry is found.
ClassCastException - if the value of the requested component is not a String.public static String convertBinarySidToString(byte[] sid)
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
sid - binary SID in byte array format
public static byte[] convertStringSidToBinary(String string)
string - SID in readable format
convertBinarySidToString(byte[])
|
Spring LDAP | ||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||