org.springframework.ldap.authentication

## Class DefaultValuesAuthenticationSourceDecorator

- java.lang.Object
- - org.springframework.ldap.authentication.DefaultValuesAuthenticationSourceDecorator

- All Implemented Interfaces:
    InitializingBean, AuthenticationSource

      public class DefaultValuesAuthenticationSourceDecorator
      extends Object
      implements AuthenticationSource, InitializingBean

  Decorator on AuthenticationSource to have default authentication information be returned should the target return empty principal and credentials. Useful in combination with `AcegiAuthenticationSource` if users are to be allowed to read some information even though they are not logged in.

  Note: The `defaultUser` should be an non-privileged user. This is important as this is the one that will be used when no user is logged in (i.e. empty principal is returned from the target AuthenticationSource).

  Author:
    Mattias Hellborg Arthursson

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `DefaultValuesAuthenticationSourceDecorator()` Constructor for bean usage.
    `DefaultValuesAuthenticationSourceDecorator(AuthenticationSource target, String defaultUser, String defaultPassword)` Constructor to setup instance directly.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `afterPropertiesSet()`
    `String` | `getCredentials()` Checks if the target's principal is not empty; if not, the credentials from the target is returned - otherwise return the `defaultPassword`.
    `String` | `getPrincipal()` Checks if the target's principal is not empty; if not, this is returned - otherwise return the `defaultPassword`.
    `void` | `setDefaultPassword(String defaultPassword)` Set the password of the default user.
    `void` | `setDefaultUser(String defaultUser)` Set the default user DN.
    `void` | `setTarget(AuthenticationSource target)` Set the target AuthenticationSource.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### DefaultValuesAuthenticationSourceDecorator

          public DefaultValuesAuthenticationSourceDecorator()

      Constructor for bean usage.

    - #### DefaultValuesAuthenticationSourceDecorator

          public DefaultValuesAuthenticationSourceDecorator(AuthenticationSource target,
                                                            String defaultUser,
                                                            String defaultPassword)

      Constructor to setup instance directly.
      Parameters:
        `target` - the target AuthenticationSource.
        `defaultUser` - dn of the user to use when the target returns an empty principal.
        `defaultPassword` - password of the user to use when the target returns an empty principal.

  - ### Method Detail

    - #### getCredentials

          public String getCredentials()

      Checks if the target's principal is not empty; if not, the credentials from the target is returned - otherwise return the `defaultPassword`.
      Specified by:
        `getCredentials` in interface `AuthenticationSource`
      Returns:
        the target's password if the target's principal is not empty, the `defaultPassword` otherwise.

    - #### getPrincipal

          public String getPrincipal()

      Checks if the target's principal is not empty; if not, this is returned - otherwise return the `defaultPassword`.
      Specified by:
        `getPrincipal` in interface `AuthenticationSource`
      Returns:
        the target's principal if it is not empty, the `defaultPassword` otherwise.

    - #### setDefaultPassword

          public void setDefaultPassword(String defaultPassword)

      Set the password of the default user.
      Parameters:
        `defaultPassword` - the password of the default user.

    - #### setDefaultUser

          public void setDefaultUser(String defaultUser)

      Set the default user DN. This should be a non-privileged user, since it will be used when no authentication information is returned from the target.
      Parameters:
        `defaultUser` - DN of the default user.

    - #### setTarget

          public void setTarget(AuthenticationSource target)

      Set the target AuthenticationSource.
      Parameters:
        `target` - the target AuthenticationSource.

    - #### afterPropertiesSet

          public void afterPropertiesSet()
                                  throws Exception

      Specified by:
        `afterPropertiesSet` in interface `InitializingBean`
      Throws:
        `Exception`