|
Spring LDAP | ||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.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
name
public 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 |