|
@@ -1,282 +1,291 @@
|
|
|
[[nsa-ldap]]
|
|
|
= LDAP Namespace Options
|
|
|
-LDAP is covered in some detail in xref:servlet/authentication/passwords/ldap.adoc#servlet-authentication-ldap[its own chapter].
|
|
|
-We expand on that here with some explanation of how the namespace options map to Spring beans.
|
|
|
+LDAP is covered in some details in xref:servlet/authentication/passwords/ldap.adoc#servlet-authentication-ldap[its own chapter].
|
|
|
+We will expand on that here with some explanation of how the namespace options map to Spring beans.
|
|
|
The LDAP implementation uses Spring LDAP extensively, so some familiarity with that project's API may be useful.
|
|
|
|
|
|
|
|
|
[[nsa-ldap-server]]
|
|
|
== Defining the LDAP Server using the
|
|
|
-The `<ldap-server>` element sets up a Spring LDAP `ContextSource` for use by the other LDAP beans, defining the location of the LDAP server and other information (such as a username and password, if it does not allow anonymous access) for connecting to it.
|
|
|
-You can also use it to create an embedded server for testing.
|
|
|
+`<ldap-server>` Element
|
|
|
+This element sets up a Spring LDAP `ContextSource` for use by the other LDAP beans, defining the location of the LDAP server and other information (such as a username and password, if it doesn't allow anonymous access) for connecting to it.
|
|
|
+It can also be used to create an embedded server for testing.
|
|
|
Details of the syntax for both options are covered in the xref:servlet/authentication/passwords/ldap.adoc#servlet-authentication-ldap[LDAP chapter].
|
|
|
-The actual `ContextSource` implementation is `DefaultSpringSecurityContextSource`, which extends Spring LDAP's `LdapContextSource` class.
|
|
|
-
|
|
|
+The actual `ContextSource` implementation is `DefaultSpringSecurityContextSource` which extends Spring LDAP's `LdapContextSource` class.
|
|
|
The `manager-dn` and `manager-password` attributes map to the latter's `userDn` and `password` properties respectively.
|
|
|
|
|
|
-If you have only one server defined in your application context, the other LDAP namespace-defined beans use it automatically.
|
|
|
-Otherwise, you can give the element an `id` attribute and refer to it from other namespace beans by using the `server-ref` attribute.
|
|
|
+If you only have one server defined in your application context, the other LDAP namespace-defined beans will use it automatically.
|
|
|
+Otherwise, you can give the element an "id" attribute and refer to it from other namespace beans using the `server-ref` attribute.
|
|
|
This is actually the bean `id` of the `ContextSource` instance, if you want to use it in other traditional Spring beans.
|
|
|
|
|
|
|
|
|
[[nsa-ldap-server-attributes]]
|
|
|
=== <ldap-server> Attributes
|
|
|
|
|
|
-The `<ldap-server>` element has the following attributes:
|
|
|
-
|
|
|
[[nsa-ldap-server-mode]]
|
|
|
-`mode`::
|
|
|
-Explicitly specifies which embedded LDAP server to use. Valid values are `apacheds` and `unboundid`. By default, it depends on whether the library is available in the classpath.
|
|
|
+* **mode**
|
|
|
+Explicitly specifies which embedded ldap server should use. Values are `apacheds` and `unboundid`. By default, it will depends if the library is available in the classpath.
|
|
|
|
|
|
[[nsa-ldap-server-id]]
|
|
|
-`id`::
|
|
|
+* **id**
|
|
|
A bean identifier, used for referring to the bean elsewhere in the context.
|
|
|
|
|
|
|
|
|
[[nsa-ldap-server-ldif]]
|
|
|
-`ldif`::
|
|
|
+* **ldif**
|
|
|
Explicitly specifies an ldif file resource to load into an embedded LDAP server.
|
|
|
-The ldif file should be a Spring resource pattern (such as `classpath:init.ldif`).
|
|
|
-Default: `classpath*:*.ldif`
|
|
|
+The ldif should be a Spring resource pattern (i.e. classpath:init.ldif).
|
|
|
+The default is classpath*:*.ldif
|
|
|
|
|
|
|
|
|
[[nsa-ldap-server-manager-dn]]
|
|
|
-`manager-dn`::
|
|
|
-Username (DN) of the "`manager`" user identity, which is used to authenticate to a (non-embedded) LDAP server.
|
|
|
-If omitted, anonymous access is used.
|
|
|
+* **manager-dn**
|
|
|
+Username (DN) of the "manager" user identity which will be used to authenticate to a (non-embedded) LDAP server.
|
|
|
+If omitted, anonymous access will be used.
|
|
|
|
|
|
|
|
|
[[nsa-ldap-server-manager-password]]
|
|
|
-`manager-password`::
|
|
|
+* **manager-password**
|
|
|
The password for the manager DN.
|
|
|
-This is required if the `manager-dn` is specified.
|
|
|
+This is required if the manager-dn is specified.
|
|
|
|
|
|
|
|
|
[[nsa-ldap-server-port]]
|
|
|
-`port`::
|
|
|
+* **port**
|
|
|
Specifies an IP port number.
|
|
|
-You can use use it to configure an embedded LDAP server, for example.
|
|
|
-The default value is `33389`.
|
|
|
+Used to configure an embedded LDAP server, for example.
|
|
|
+The default value is 33389.
|
|
|
|
|
|
|
|
|
[[nsa-ldap-server-root]]
|
|
|
-`root`::
|
|
|
+* **root**
|
|
|
Optional root suffix for the embedded LDAP server.
|
|
|
-Default: `dc=springframework,dc=org`
|
|
|
+Default is "dc=springframework,dc=org"
|
|
|
|
|
|
|
|
|
[[nsa-ldap-server-url]]
|
|
|
-`url`::
|
|
|
-Specifies the LDAP server URL when not using the embedded LDAP server.
|
|
|
+* **url**
|
|
|
+Specifies the ldap server URL when not using the embedded LDAP server.
|
|
|
|
|
|
|
|
|
[[nsa-ldap-authentication-provider]]
|
|
|
== <ldap-authentication-provider>
|
|
|
This element is shorthand for the creation of an `LdapAuthenticationProvider` instance.
|
|
|
-By default, this is configured with a `BindAuthenticator` instance and a `DefaultAuthoritiesPopulator`.
|
|
|
+By default this will be configured with a `BindAuthenticator` instance and a `DefaultAuthoritiesPopulator`.
|
|
|
As with all namespace authentication providers, it must be included as a child of the `authentication-provider` element.
|
|
|
|
|
|
|
|
|
[[nsa-ldap-authentication-provider-parents]]
|
|
|
=== Parent Elements of <ldap-authentication-provider>
|
|
|
|
|
|
-The parent element of the `<ldap-authentication-provider>` is the xref:servlet/appendix/namespace/authentication-manager.adoc#nsa-authentication-manager[authentication-manager]
|
|
|
+
|
|
|
+* xref:servlet/appendix/namespace/authentication-manager.adoc#nsa-authentication-manager[authentication-manager]
|
|
|
+
|
|
|
|
|
|
|
|
|
[[nsa-ldap-authentication-provider-attributes]]
|
|
|
=== <ldap-authentication-provider> Attributes
|
|
|
|
|
|
-The `<ldap-authentication-provider>` element has the following attributes:
|
|
|
|
|
|
[[nsa-ldap-authentication-provider-group-role-attribute]]
|
|
|
-`group-role-attribute`::
|
|
|
-The LDAP attribute name, which contains the role name that is used within Spring Security.
|
|
|
-Maps to the `groupRoleAttribute` property of the `DefaultLdapAuthoritiesPopulator`.
|
|
|
-Default: `cn`
|
|
|
+* **group-role-attribute**
|
|
|
+The LDAP attribute name which contains the role name which will be used within Spring Security.
|
|
|
+Maps to the ``DefaultLdapAuthoritiesPopulator``'s `groupRoleAttribute` property.
|
|
|
+Defaults to "cn".
|
|
|
|
|
|
|
|
|
[[nsa-ldap-authentication-provider-group-search-base]]
|
|
|
-`group-search-base`::
|
|
|
+* **group-search-base**
|
|
|
Search base for group membership searches.
|
|
|
-Maps to the `groupSearchBase` constructor argument of `DefaultLdapAuthoritiesPopulator`.
|
|
|
-Default: `""` (searching from the root)
|
|
|
+Maps to the ``DefaultLdapAuthoritiesPopulator``'s `groupSearchBase` constructor argument.
|
|
|
+Defaults to "" (searching from the root).
|
|
|
+
|
|
|
|
|
|
[[nsa-ldap-authentication-provider-group-search-filter]]
|
|
|
-`group-search-filter`::
|
|
|
+* **group-search-filter**
|
|
|
Group search filter.
|
|
|
-Maps to the `groupSearchFilter` property of `DefaultLdapAuthoritiesPopulator`.
|
|
|
+Maps to the ``DefaultLdapAuthoritiesPopulator``'s `groupSearchFilter` property.
|
|
|
+Defaults to `+(uniqueMember={0})+`.
|
|
|
The substituted parameter is the DN of the user.
|
|
|
-Default: `+(uniqueMember={0})+`
|
|
|
+
|
|
|
|
|
|
[[nsa-ldap-authentication-provider-role-prefix]]
|
|
|
-`role-prefix`::
|
|
|
-A non-empty string prefix that is added to role strings loaded from persistent storage.
|
|
|
-Maps to the `rolePrefix` property of `DefaultLdapAuthoritiesPopulator`.
|
|
|
-Use a value of `none` for no prefix in cases where the default is non-empty.
|
|
|
-Default: `ROLE_`
|
|
|
+* **role-prefix**
|
|
|
+A non-empty string prefix that will be added to role strings loaded from persistent.
|
|
|
+Maps to the ``DefaultLdapAuthoritiesPopulator``'s `rolePrefix` property.
|
|
|
+Defaults to "ROLE_".
|
|
|
+Use the value "none" for no prefix in cases where the default is non-empty.
|
|
|
|
|
|
|
|
|
[[nsa-ldap-authentication-provider-server-ref]]
|
|
|
-`server-ref`::
|
|
|
+* **server-ref**
|
|
|
The optional server to use.
|
|
|
-If omitted, and a default LDAP server is registered (by using `<ldap-server>` with no ID), that server is used.
|
|
|
+If omitted, and a default LDAP server is registered (using <ldap-server> with no Id), that server will be used.
|
|
|
|
|
|
|
|
|
[[nsa-ldap-authentication-provider-user-context-mapper-ref]]
|
|
|
-`user-context-mapper-ref`::
|
|
|
-Allows explicit customization of the loaded user object by specifying a `UserDetailsContextMapper` bean, which is called with the context information from the user's directory entry.
|
|
|
+* **user-context-mapper-ref**
|
|
|
+Allows explicit customization of the loaded user object by specifying a UserDetailsContextMapper bean which will be called with the context information from the user's directory entry
|
|
|
|
|
|
|
|
|
[[nsa-ldap-authentication-provider-user-details-class]]
|
|
|
-`user-details-class`::
|
|
|
-Lets the `objectClass` of the user entry be specified.
|
|
|
-If set, the framework tries to load standard attributes for the defined class into the returned `UserDetails` object
|
|
|
+* **user-details-class**
|
|
|
+Allows the objectClass of the user entry to be specified.
|
|
|
+If set, the framework will attempt to load standard attributes for the defined class into the returned UserDetails object
|
|
|
|
|
|
|
|
|
[[nsa-ldap-authentication-provider-user-dn-pattern]]
|
|
|
-user-dn-pattern::
|
|
|
-If your users are at a fixed location in the directory (that is, you can work out the DN directly from the username without doing a directory search), you can use this attribute to map directly to the DN.
|
|
|
+* **user-dn-pattern**
|
|
|
+If your users are at a fixed location in the directory (i.e. you can work out the DN directly from the username without doing a directory search), you can use this attribute to map directly to the DN.
|
|
|
It maps directly to the `userDnPatterns` property of `AbstractLdapAuthenticator`.
|
|
|
-The value is a specific pattern used to build the user's DN -- for example, `+uid={0},ou=people+`.
|
|
|
-The `+{0}+` key must be present and is substituted with the username.
|
|
|
+The value is a specific pattern used to build the user's DN, for example `+uid={0},ou=people+`.
|
|
|
+The key `+{0}+` must be present and will be substituted with the username.
|
|
|
|
|
|
|
|
|
[[nsa-ldap-authentication-provider-user-search-base]]
|
|
|
-`user-search-base`::
|
|
|
+* **user-search-base**
|
|
|
Search base for user searches.
|
|
|
-Only used with a `user-search-filter`.
|
|
|
-Default `""`
|
|
|
+Defaults to "".
|
|
|
+Only used with a 'user-search-filter'.
|
|
|
+
|
|
|
+
|
|
|
-If you need to perform a search to locate the user in the directory, you can set these attributes to control the search.
|
|
|
-The `BindAuthenticator` is configured with a `FilterBasedLdapUserSearch`, and the attribute values map directly to the first two arguments of that bean's constructor.
|
|
|
-If these attributes are not set and no `user-dn-pattern` has been supplied as an alternative, the default search values of `+user-search-filter="(uid={0})"+` and `user-search-base=""` are used.
|
|
|
+
|
|
|
+If you need to perform a search to locate the user in the directory, then you can set these attributes to control the search.
|
|
|
+The `BindAuthenticator` will be configured with a `FilterBasedLdapUserSearch` and the attribute values map directly to the first two arguments of that bean's constructor.
|
|
|
+If these attributes aren't set and no `user-dn-pattern` has been supplied as an alternative, then the default search values of `+user-search-filter="(uid={0})"+` and `user-search-base=""` will be used.
|
|
|
+
|
|
|
|
|
|
[[nsa-ldap-authentication-provider-user-search-filter]]
|
|
|
-`user-search-filter`::
|
|
|
-The LDAP filter used to search for users (optional) -- for example, `+(uid={0})+`.
|
|
|
+* **user-search-filter**
|
|
|
+The LDAP filter used to search for users (optional).
|
|
|
For example `+(uid={0})+`.
|
|
|
The substituted parameter is the user's login name.
|
|
|
+
|
|
|
+
|
|
|
-If you need to perform a search to locate the user in the directory, you can set these attributes to control the search.
|
|
|
-The `BindAuthenticator` is configured with a `FilterBasedLdapUserSearch`, and the attribute values map directly to the first two arguments of that bean's constructor.
|
|
|
-If these attributes are not set and no `user-dn-pattern` has been supplied as an alternative, the default search values of `+user-search-filter="(uid={0})"+` and `user-search-base=""` is used.
|
|
|
+
|
|
|
+If you need to perform a search to locate the user in the directory, then you can set these attributes to control the search.
|
|
|
+The `BindAuthenticator` will be configured with a `FilterBasedLdapUserSearch` and the attribute values map directly to the first two arguments of that bean's constructor.
|
|
|
+If these attributes aren't set and no `user-dn-pattern` has been supplied as an alternative, then the default search values of `+user-search-filter="(uid={0})"+` and `user-search-base=""` will be used.
|
|
|
|
|
|
|
|
|
[[nsa-ldap-authentication-provider-children]]
|
|
|
=== Child Elements of <ldap-authentication-provider>
|
|
|
|
|
|
-The `<ldap-authentication-provider>` has a single child element: <<nsa-password-compare,password-compare>>.
|
|
|
+
|
|
|
+* <<nsa-password-compare,password-compare>>
|
|
|
+
|
|
|
+
|
|
|
|
|
|
[[nsa-password-compare]]
|
|
|
== <password-compare>
|
|
|
-The `<password-compare>` element is used as a child element to `<ldap-provider>` and switches the authentication strategy from `BindAuthenticator` to `PasswordComparisonAuthenticator`.
|
|
|
+This is used as child element to `<ldap-provider>` and switches the authentication strategy from `BindAuthenticator` to `PasswordComparisonAuthenticator`.
|
|
|
|
|
|
|
|
|
[[nsa-password-compare-parents]]
|
|
|
=== Parent Elements of <password-compare>
|
|
|
|
|
|
-The parent element of the `<password-compare>` element is the <<nsa-ldap-authentication-provider,ldap-authentication-provider>> element.
|
|
|
+
|
|
|
+* <<nsa-ldap-authentication-provider,ldap-authentication-provider>>
|
|
|
+
|
|
|
|
|
|
|
|
|
[[nsa-password-compare-attributes]]
|
|
|
=== <password-compare> Attributes
|
|
|
|
|
|
-The `<password-compare>` has the following attributes:
|
|
|
|
|
|
[[nsa-password-compare-hash]]
|
|
|
-`hash`::
|
|
|
+* **hash**
|
|
|
Defines the hashing algorithm used on user passwords.
|
|
|
We recommend strongly against using MD4, as it is a very weak hashing algorithm.
|
|
|
|
|
|
|
|
|
[[nsa-password-compare-password-attribute]]
|
|
|
-`password-attribute`::
|
|
|
-The attribute in the directory that contains the user password.
|
|
|
-Default: `userPassword`
|
|
|
+* **password-attribute**
|
|
|
+The attribute in the directory which contains the user password.
|
|
|
+Defaults to "userPassword".
|
|
|
|
|
|
|
|
|
[[nsa-password-compare-children]]
|
|
|
=== Child Elements of <password-compare>
|
|
|
|
|
|
|
|
|
-The `<password-compare>` element has a single child element: xref:servlet/appendix/namespace/authentication-manager.adoc#nsa-password-encoder[password-encoder]
|
|
|
+* xref:servlet/appendix/namespace/authentication-manager.adoc#nsa-password-encoder[password-encoder]
|
|
|
|
|
|
|
|
|
|
|
|
[[nsa-ldap-user-service]]
|
|
|
== <ldap-user-service>
|
|
|
-The `<ldap-user-service>` element configures an LDAP `UserDetailsService`.
|
|
|
-It uses `LdapUserDetailsService`, which is a combination of a `FilterBasedLdapUserSearch` and a `DefaultLdapAuthoritiesPopulator`.
|
|
|
-The attributes it supports have the same usage as `<ldap-provider>`.
|
|
|
+This element configures an LDAP `UserDetailsService`.
|
|
|
+The class used is `LdapUserDetailsService` which is a combination of a `FilterBasedLdapUserSearch` and a `DefaultLdapAuthoritiesPopulator`.
|
|
|
+The attributes it supports have the same usage as in `<ldap-provider>`.
|
|
|
|
|
|
|
|
|
[[nsa-ldap-user-service-attributes]]
|
|
|
=== <ldap-user-service> Attributes
|
|
|
|
|
|
-The `<ldap-user-service>` element has the following attributes:
|
|
|
|
|
|
[[nsa-ldap-user-service-cache-ref]]
|
|
|
-`cache-ref`::
|
|
|
-Defines a reference to a cache for use with a `UserDetailsService`.
|
|
|
+* **cache-ref**
|
|
|
+Defines a reference to a cache for use with a UserDetailsService.
|
|
|
|
|
|
|
|
|
[[nsa-ldap-user-service-group-role-attribute]]
|
|
|
-`group-role-attribute`::
|
|
|
-The LDAP attribute name that contains the role name to be used within Spring Security.
|
|
|
-Default: `cn`
|
|
|
+* **group-role-attribute**
|
|
|
+The LDAP attribute name which contains the role name which will be used within Spring Security.
|
|
|
+Defaults to "cn".
|
|
|
|
|
|
|
|
|
[[nsa-ldap-user-service-group-search-base]]
|
|
|
-`group-search-base`::
|
|
|
+* **group-search-base**
|
|
|
Search base for group membership searches.
|
|
|
-Default: `""` (searching from the root)
|
|
|
+Defaults to "" (searching from the root).
|
|
|
|
|
|
|
|
|
[[nsa-ldap-user-service-group-search-filter]]
|
|
|
-`group-search-filter`::
|
|
|
+* **group-search-filter**
|
|
|
Group search filter.
|
|
|
+Defaults to `+(uniqueMember={0})+`.
|
|
|
The substituted parameter is the DN of the user.
|
|
|
-Default: `+(uniqueMember={0})+`
|
|
|
|
|
|
|
|
|
[[nsa-ldap-user-service-id]]
|
|
|
-`id`::
|
|
|
+* **id**
|
|
|
A bean identifier, used for referring to the bean elsewhere in the context.
|
|
|
|
|
|
|
|
|
[[nsa-ldap-user-service-role-prefix]]
|
|
|
-`role-prefix`::
|
|
|
-A non-empty string prefix that is added to role strings loaded from persistent storage (for example,
|
|
|
-`ROLE_`).
|
|
|
-Use a value of `none` for no prefix in cases where the default is non-empty.
|
|
|
+* **role-prefix**
|
|
|
+A non-empty string prefix that will be added to role strings loaded from persistent storage (e.g.
|
|
|
+"ROLE_").
|
|
|
+Use the value "none" for no prefix in cases where the default is non-empty.
|
|
|
|
|
|
|
|
|
[[nsa-ldap-user-service-server-ref]]
|
|
|
-`server-ref`::
|
|
|
+* **server-ref**
|
|
|
The optional server to use.
|
|
|
-If omitted and a default LDAP server is registered (by using `<ldap-server>` with no ID), that server is used.
|
|
|
+If omitted, and a default LDAP server is registered (using <ldap-server> with no Id), that server will be used.
|
|
|
|
|
|
|
|
|
[[nsa-ldap-user-service-user-context-mapper-ref]]
|
|
|
-`user-context-mapper-ref`::
|
|
|
-Allows explicit customization of the loaded user object by specifying a `UserDetailsContextMapper` bean, which is called with the context information from the user's directory entry.
|
|
|
+* **user-context-mapper-ref**
|
|
|
+Allows explicit customization of the loaded user object by specifying a UserDetailsContextMapper bean which will be called with the context information from the user's directory entry
|
|
|
|
|
|
|
|
|
[[nsa-ldap-user-service-user-details-class]]
|
|
|
-`user-details-class`::
|
|
|
-Lets the `objectClass` of the user entry be specified.
|
|
|
-If set, the framework tries to load standard attributes for the defined class into the returned `UserDetails` object.
|
|
|
+* **user-details-class**
|
|
|
+Allows the objectClass of the user entry to be specified.
|
|
|
+If set, the framework will attempt to load standard attributes for the defined class into the returned UserDetails object
|
|
|
|
|
|
|
|
|
[[nsa-ldap-user-service-user-search-base]]
|
|
|
-`user-search-base`::
|
|
|
+* **user-search-base**
|
|
|
Search base for user searches.
|
|
|
-It is used only with a <<nsa-ldap-user-service-user-search-filter,user-search-filter>> element.
|
|
|
-Default: `""`
|
|
|
+Defaults to "".
|
|
|
+Only used with a 'user-search-filter'.
|
|
|
|
|
|
|
|
|
[[nsa-ldap-user-service-user-search-filter]]
|
|
|
-`user-search-filter`::
|
|
|
-The LDAP filter used to search for users (optional) -- for example, `+(uid={0})+`.
|
|
|
+* **user-search-filter**
|
|
|
+The LDAP filter used to search for users (optional).
|
|
|
For example `+(uid={0})+`.
|
|
|
The substituted parameter is the user's login name.
|