org.springframework.ldap.core

## Interface ContextSource

- All Known Subinterfaces:
    BaseLdapPathContextSource
  All Known Implementing Classes:
    AbstractContextSource, DirContextSource, LdapContextSource, MutablePooledContextSource, MutablePoolingContextSource, PooledContextSource, PoolingContextSource, SingleContextSource, TransactionAwareContextSourceProxy

      public interface ContextSource

  A `ContextSource` is responsible for configuring and creating `DirContext` instances. It is typically used from `LdapTemplate` to acquiring contexts for LDAP operations, but may be used standalone to perform LDAP authentication.
  Author:
    Adam Skogman, Mattias Hellborg Arthursson
  See Also:
    `LdapTemplate`

- - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method and Description
    --- | ---
    `DirContext` | `getContext(String principal, String credentials)` Gets a `DirContext` instance authenticated using the supplied principal and credentials.
    `DirContext` | `getReadOnlyContext()` Gets a read-only `DirContext`.
    `DirContext` | `getReadWriteContext()` Gets a read-write `DirContext` instance.

- - ### Method Detail

    - #### getReadOnlyContext

          DirContext getReadOnlyContext()
                                 throws NamingException

      Gets a read-only `DirContext`. The returned `DirContext` must be possible to perform read-only operations on.
      Returns:
        A DirContext instance, never null.
      Throws:
        `NamingException` - if some error occurs creating an DirContext.

    - #### getReadWriteContext

          DirContext getReadWriteContext()
                                  throws NamingException

      Gets a read-write `DirContext` instance.
      Returns:
        A `DirContext` instance, never `null`.
      Throws:
        `NamingException` - if some error occurs creating an `DirContext`.

    - #### getContext

          DirContext getContext(String principal,
                                String credentials)
                         throws NamingException

      Gets a `DirContext` instance authenticated using the supplied principal and credentials. Typically to be used for plain authentication purposes. Note that this method will never make use of native Java LDAP pooling, even though this instance is configured to do so. This is to force password changes in the target directory to take effect as soon as possible.
      Parameters:
        `principal` - The principal (typically a distinguished name of a user in the LDAP tree) to use for authentication.
        `credentials` - The credentials to use for authentication.
      Returns:
        an authenticated `DirContext` instance, never `null`.
      Throws:
        `NamingException`
      Since:
        1.3