| [[spring-ldap-component]] |
| == Spring LDAP Component |
| |
| *Available as of Camel version 2.11* |
| |
| The *spring-ldap:* component provides a Camel wrapper for |
| http://www.springsource.org/ldap[Spring LDAP]. |
| |
| Maven users will need to add the following dependency to their `pom.xml` |
| for this component: |
| |
| [source,xml] |
| ------------------------------------------------------------ |
| <dependency> |
| <groupId>org.apache.camel</groupId> |
| <artifactId>camel-spring-ldap</artifactId> |
| <version>x.x.x</version> |
| <!-- use the same version as your Camel core version --> |
| </dependency> |
| ------------------------------------------------------------ |
| |
| ### URI format |
| |
| [source,java] |
| ---------------------------------------- |
| spring-ldap:springLdapTemplate[?options] |
| ---------------------------------------- |
| |
| Where *springLdapTemplate* is the name of the |
| http://static.springsource.org/spring-ldap/site/apidocs/org/springframework/ldap/core/LdapTemplate.html[Spring |
| LDAP Template bean]. In this bean, you configure the URL and the |
| credentials for your LDAP access. |
| |
| ### Options |
| |
| |
| // component options: START |
| The Spring LDAP component has no options. |
| // component options: END |
| |
| |
| |
| // endpoint options: START |
| The Spring LDAP endpoint is configured using URI syntax: |
| |
| ---- |
| spring-ldap:templateName |
| ---- |
| |
| with the following path and query parameters: |
| |
| ==== Path Parameters (1 parameters): |
| |
| |
| [width="100%",cols="2,5,^1,2",options="header"] |
| |=== |
| | Name | Description | Default | Type |
| | *templateName* | *Required* Name of the Spring LDAP Template bean | | String |
| |=== |
| |
| |
| ==== Query Parameters (3 parameters): |
| |
| |
| [width="100%",cols="2,5,^1,2",options="header"] |
| |=== |
| | Name | Description | Default | Type |
| | *operation* (producer) | *Required* The LDAP operation to be performed. | | LdapOperation |
| | *scope* (producer) | The scope of the search operation. | subtree | String |
| | *synchronous* (advanced) | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | boolean |
| |=== |
| // endpoint options: END |
| |
| |
| ### Usage |
| |
| The component supports producer endpoint only. An attempt to create a |
| consumer endpoint will result in an `UnsupportedOperationException`. + |
| The body of the message must be a map (an instance of `java.util.Map`). |
| Unless a base DN is specified by in the configuration of your ContextSource, |
| this map must contain at least an entry with the key *`dn`* (not needed for function_driven operation) that |
| specifies the root node for the LDAP operation to be performed. Other |
| entries of the map are operation-specific (see below). |
| |
| The body of the message remains unchanged for the `bind` and `unbind` |
| operations. For the `search` and `function_driven` operations, the body is set to the result of |
| the search, see |
| http://static.springsource.org/spring-ldap/site/apidocs/org/springframework/ldap/core/LdapTemplate.html#search%28java.lang.String,%20java.lang.String,%20int,%20org.springframework.ldap.core.AttributesMapper%29[http://static.springsource.org/spring-ldap/site/apidocs/org/springframework/ldap/core/LdapTemplate.html#search%28java.lang.String,%20java.lang.String,%20int,%20org.springframework.ldap.core.AttributesMapper%29]. |
| |
| #### Search |
| |
| The message body must have an entry with the key *`filter`*. The value |
| must be a `String` representing a valid LDAP filter, see |
| http://en.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol#Search_and_Compare[http://en.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol#Search_and_Compare]. |
| |
| #### Bind |
| |
| The message body must have an entry with the key *`attributes`*. The |
| value must be an instance of |
| http://docs.oracle.com/javase/6/docs/api/javax/naming/directory/Attributes.html[javax.naming.directory.Attributes] |
| This entry specifies the LDAP node to be created. |
| |
| #### Unbind |
| |
| No further entries necessary, the node with the specified *`dn`* is |
| deleted. |
| |
| #### Authenticate |
| |
| The message body must have entries with the keys *`filter`* and *`password`*. The |
| values must be an instance of `String` representing a valid LDAP filter and a user password, respectively. |
| |
| #### Modify Attributes |
| |
| The message body must have an entry with the key *`modificationItems`*. The |
| value must be an instance of any array of type |
| http://docs.oracle.com/javase/6/docs/api/javax/naming/directory/ModificationItem.html[javax.naming.directory.ModificationItem] |
| |
| #### Function-Driven |
| |
| The message body must have entries with the keys *`function`* and *`request`*. The *`function`* value must be of type `java.util.function.BiFunction<L, Q, S>`. The `L` type parameter must be of type `org.springframework.ldap.core.LdapOperations`. The *`request`* value must be the same type as the `Q` type parameter in the *`function`* and it must encapsulate the parameters expected by the LdapTemplate method being invoked within the *`function`*. The `S` type parameter represents the response type as returned by the LdapTemplate method being invoked. |
| This operation allows dynamic invocation of LdapTemplate methods that are not covered by the operations mentioned above. |
| |
| *Key definitions* |
| |
| In order to avoid spelling errors, the following constants are defined |
| in `org.apache.camel.springldap.SpringLdapProducer`: |
| |
| * public static final String DN = "dn" |
| * public static final String FILTER = "filter" |
| * public static final String ATTRIBUTES = "attributes" |
| * public static final String PASSWORD = "password"; |
| * public static final String MODIFICATION_ITEMS = "modificationItems"; |
| * public static final String FUNCTION = "function"; |
| * public static final String REQUEST = "request"; |