mirror of https://github.com/OpenIdentityPlatform/OpenDJ.git

Matthew Swift
30.31.2011 add498c0d910b6d77605f31f4fa1292765ec7c28
OPENDJ-262: Implement pass through authentication (PTA)

Add configuration options for SSL, timeouts, and advanced TCP settings.

3 files modified
361 ■■■■ changed files
opends/resource/schema/02-config.ldif 14 ●●●●● patch | view | raw | blame | history
opends/src/admin/defn/org/opends/server/admin/std/LDAPPassThroughAuthenticationPolicyConfiguration.xml 322 ●●●● patch | view | raw | blame | history
opends/src/admin/messages/LDAPPassThroughAuthenticationPolicyCfgDefn.properties 25 ●●●● patch | view | raw | blame | history
opends/resource/schema/02-config.ldif
@@ -2611,6 +2611,11 @@
  NAME 'ds-cfg-mapped-search-base-dn'
  SYNTAX 1.3.6.1.4.1.1466.115.121.1.12
  X-ORIGIN 'OpenDJ Directory Server' )
attributeTypes: ( 1.3.6.1.4.1.36733.2.1.1.19
  NAME 'ds-cfg-connection-timeout'
  SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
  SINGLE-VALUE
  X-ORIGIN 'OpenDJ Directory Server' )
objectClasses: ( 1.3.6.1.4.1.26027.1.2.1
  NAME 'ds-cfg-access-control-handler'
  SUP top
@@ -4362,5 +4367,12 @@
        ds-cfg-mapped-attribute $
        ds-cfg-mapped-search-bind-dn $
        ds-cfg-mapped-search-bind-password $
        ds-cfg-mapped-search-base-dn )
        ds-cfg-mapped-search-base-dn $
        ds-cfg-connection-timeout $
        ds-cfg-trust-manager-provider $
        ds-cfg-use-ssl $
        ds-cfg-use-tcp-keep-alive $
        ds-cfg-use-tcp-no-delay $
        ds-cfg-ssl-protocol $
        ds-cfg-ssl-cipher-suite )
  X-ORIGIN 'OpenDJ Directory Server' )
opends/src/admin/defn/org/opends/server/admin/std/LDAPPassThroughAuthenticationPolicyConfiguration.xml
@@ -26,21 +26,19 @@
  !      Copyright 2011 ForgeRock AS
  ! -->
<adm:managed-object name="ldap-pass-through-authentication-policy"
  plural-name="ldap-pass-through-authentication-policies"
  extends="authentication-policy"
  package="org.opends.server.admin.std"
  xmlns:adm="http://www.opends.org/admin"
  plural-name="ldap-pass-through-authentication-policies" extends="authentication-policy"
  package="org.opends.server.admin.std" xmlns:adm="http://www.opends.org/admin"
  xmlns:ldap="http://www.opends.org/admin-ldap">
  <adm:synopsis>
    An authentication policy for users whose credentials are managed by a
    remote LDAP directory service.
    An authentication policy for users whose credentials are managed
    by a remote LDAP directory service.
  </adm:synopsis>
  <adm:description>
    Authentication attempts will be redirected to the remote LDAP directory
    service based on a combination of the criteria specified in this policy
    and the content of the user's entry in this directory server.
    Authentication attempts will be redirected to the remote LDAP
    directory service based on a combination of the criteria specified in this
    policy and the content of the user's entry in this directory server.
  </adm:description>
  <adm:constraint>
@@ -73,14 +71,14 @@
      </adm:implies>
    </adm:condition>
  </adm:constraint>
  <adm:profile name="ldap">
    <ldap:object-class>
      <ldap:name>ds-cfg-ldap-pass-through-authentication-policy</ldap:name>
      <ldap:superior>ds-cfg-authentication-policy</ldap:superior>
    </ldap:object-class>
  </adm:profile>
  <adm:property-override name="java-class" advanced="true">
    <adm:default-behavior>
      <adm:defined>
@@ -90,18 +88,18 @@
      </adm:defined>
    </adm:default-behavior>
  </adm:property-override>
  <adm:property name="primary-remote-ldap-server"
                multi-valued="true" mandatory="true">
  <adm:property name="primary-remote-ldap-server" multi-valued="true"
    mandatory="true">
    <adm:synopsis>
      Specifies the primary list of remote LDAP servers which should be used
      for pass through authentication.
      Specifies the primary list of remote LDAP servers which should
      be used for pass through authentication.
    </adm:synopsis>
    <adm:description>
      If more than one LDAP server is specified then operations may be
      distributed across them. If all of the primary LDAP servers are
      unavailable then operations will fail-over to the set of secondary
      LDAP servers, if defined.
      If more than one LDAP server is specified then operations
      may be distributed across them. If all of the primary LDAP servers are
      unavailable then operations will fail-over to the set of secondary LDAP
      servers, if defined.
    </adm:description>
    <adm:syntax>
      <adm:string>
@@ -120,16 +118,16 @@
      </ldap:attribute>
    </adm:profile>
  </adm:property>
  <adm:property name="secondary-remote-ldap-server" multi-valued="true">
    <adm:synopsis>
      Specifies the secondary list of remote LDAP servers which should be used
      for pass through authentication in the event that the primary LDAP servers
      are unavailable.
      Specifies the secondary list of remote LDAP servers which
      should be used for pass through authentication in the event that the
      primary LDAP servers are unavailable.
    </adm:synopsis>
    <adm:description>
      If more than one LDAP server is specified then operations may be
      distributed across them. Operations will be rerouted to the primary
      If more than one LDAP server is specified then operations
      may be distributed across them. Operations will be rerouted to the primary
      LDAP servers as soon as they are determined to be available.
    </adm:description>
    <adm:default-behavior>
@@ -154,11 +152,80 @@
      </ldap:attribute>
    </adm:profile>
  </adm:property>
  <adm:property name="connection-timeout">
    <adm:synopsis>
      Specifies the timeout used when connecting to remote LDAP
      director servers, performing SSL negotiation, and for individual search
      and bind requests.
    </adm:synopsis>
    <adm:description>
      If the timeout expires then the current operation will be
      aborted and retried against another LDAP server if one is available.
    </adm:description>
    <adm:default-behavior>
      <adm:defined>
        <adm:value>3 seconds</adm:value>
      </adm:defined>
    </adm:default-behavior>
    <adm:syntax>
      <adm:duration base-unit="ms" lower-limit="0" />
    </adm:syntax>
    <adm:profile name="ldap">
      <ldap:attribute>
        <ldap:name>ds-cfg-connection-timeout</ldap:name>
      </ldap:attribute>
    </adm:profile>
  </adm:property>
  <adm:property-reference name="use-ssl" />
  <adm:property name="trust-manager-provider">
    <adm:synopsis>
      Specifies the name of the trust manager that should be used
      when negotiating SSL connections with remote LDAP directory servers.
    </adm:synopsis>
    <adm:requires-admin-action>
      <adm:none>
        <adm:synopsis>
          Changes to this property take effect immediately, but only
          impact subsequent SSL connection negotiations.
        </adm:synopsis>
      </adm:none>
    </adm:requires-admin-action>
    <adm:default-behavior>
      <adm:undefined />
    </adm:default-behavior>
    <adm:syntax>
      <adm:aggregation relation-name="trust-manager-provider"
        parent-path="/">
        <adm:constraint>
          <adm:synopsis>
            The referenced trust manager provider must be enabled
            when SSL is enabled.
          </adm:synopsis>
          <adm:target-needs-enabling-condition>
            <adm:and>
              <adm:contains property="use-ssl" value="true" />
            </adm:and>
          </adm:target-needs-enabling-condition>
          <adm:target-is-enabled-condition>
            <adm:contains property="enabled" value="true" />
          </adm:target-is-enabled-condition>
        </adm:constraint>
      </adm:aggregation>
    </adm:syntax>
    <adm:profile name="ldap">
      <ldap:attribute>
        <ldap:name>ds-cfg-trust-manager-provider</ldap:name>
      </ldap:attribute>
    </adm:profile>
  </adm:property>
  <adm:property name="mapping-policy" mandatory="true">
    <adm:synopsis>
      Specifies the mapping algorithm for obtaining the bind DN from the user's
      entry.
      Specifies the mapping algorithm for obtaining the bind DN from
      the user's entry.
    </adm:synopsis>
    <adm:default-behavior>
      <adm:defined>
@@ -169,28 +236,29 @@
      <adm:enumeration>
        <adm:value name="unmapped">
          <adm:synopsis>
            Bind to the remote LDAP directory service using the DN of the user's
            entry in this directory server.
            Bind to the remote LDAP directory service using the DN
            of the user's entry in this directory server.
          </adm:synopsis>
        </adm:value>
        <adm:value name="mapped-bind">
          <adm:synopsis>
            Bind to the remote LDAP directory service using a DN obtained from
            an attribute in the user's entry. This policy will check each
            attribute named in the "match-attribute" property. If more than one
            attribute or value is present then the first one will be used.
            Bind to the remote LDAP directory service using a DN
            obtained from an attribute in the user's entry. This policy will
            check each attribute named in the "mapped-attribute" property. If
            more than one attribute or value is present then the first one will
            be used.
          </adm:synopsis>
        </adm:value>
        <adm:value name="mapped-search">
          <adm:synopsis>
            Bind to the remote LDAP directory service using the DN of an entry
            obtained using a search against the remote LDAP directory service.
            The search filter will comprise of an equality matching filter whose
            attribute type is the "match-attribute" property, and whose
            assertion value is the attribute value obtained from the user's
            entry. If more than one attribute or value is present then the
            filter will be composed of multiple equality filters combined using
            a logical OR (union).
            Bind to the remote LDAP directory service using the DN
            of an entry obtained using a search against the remote LDAP
            directory service. The search filter will comprise of an equality
            matching filter whose attribute type is the "mapped-attribute"
            property, and whose assertion value is the attribute value obtained
            from the user's entry. If more than one attribute or value is
            present then the filter will be composed of multiple equality
            filters combined using a logical OR (union).
          </adm:synopsis>
        </adm:value>
      </adm:enumeration>
@@ -201,24 +269,24 @@
      </ldap:attribute>
    </adm:profile>
  </adm:property>
  <adm:property name="mapped-attribute" multi-valued="true">
    <adm:synopsis>
      Specifies one or more attributes in the user's entry whose value(s) will
      determine the bind DN used when authenticating to the remote LDAP
      directory service. This property is mandatory when using the "mapped-bind"
      or "mapped-search" mapping policies.
      Specifies one or more attributes in the user's entry whose
      value(s) will determine the bind DN used when authenticating to the remote
      LDAP directory service. This property is mandatory when using the
      "mapped-bind" or "mapped-search" mapping policies.
    </adm:synopsis>
    <adm:description>
      At least one value must be provided. All values must refer to the
      name or OID of an attribute type defined in the directory server
      At least one value must be provided. All values must refer
      to the name or OID of an attribute type defined in the directory server
      schema. At least one of the named attributes must exist in a user's
      local entry in order for authentication to proceed. When multiple
      attributes or values are found in the user's entry then the behavior is
      determined by the mapping policy.
    </adm:description>
    <adm:default-behavior>
      <adm:undefined/>
      <adm:undefined />
    </adm:default-behavior>
    <adm:syntax>
      <adm:attribute-type />
@@ -229,11 +297,11 @@
      </ldap:attribute>
    </adm:profile>
  </adm:property>
  <adm:property name="mapped-search-bind-dn">
    <adm:synopsis>
      Specifies the bind DN which should be used for perform user searches
      in the remote LDAP directory service.
      Specifies the bind DN which should be used to perform user
      searches in the remote LDAP directory service.
    </adm:synopsis>
    <adm:default-behavior>
      <adm:alias>
@@ -249,11 +317,11 @@
      </ldap:attribute>
    </adm:profile>
  </adm:property>
  <adm:property name="mapped-search-bind-password">
    <adm:synopsis>
      Specifies the bind password which should be used for perform user searches
      in the remote LDAP directory service.
      Specifies the bind password which should be used to perform
      user searches in the remote LDAP directory service.
    </adm:synopsis>
    <adm:default-behavior>
      <adm:alias>
@@ -269,19 +337,19 @@
      </ldap:attribute>
    </adm:profile>
  </adm:property>
  <adm:property name="mapped-search-base-dn" multi-valued="true">
    <adm:synopsis>
      Specifies the set of base DNs below which to search for users in the
      remote LDAP directory service. This property is mandatory when
      Specifies the set of base DNs below which to search for users
      in the remote LDAP directory service. This property is mandatory when
      using the "mapped-search" mapping policy.
    </adm:synopsis>
    <adm:description>
      If multiple values are given, searches are performed below all specified
      base DNs.
      If multiple values are given, searches are performed below
      all specified base DNs.
    </adm:description>
    <adm:default-behavior>
      <adm:undefined/>
      <adm:undefined />
    </adm:default-behavior>
    <adm:syntax>
      <adm:dn />
@@ -292,5 +360,127 @@
      </ldap:attribute>
    </adm:profile>
  </adm:property>
  <adm:property name="use-tcp-keep-alive" advanced="true">
    <adm:synopsis>
      Indicates whether LDAP connections should use TCP keep-alive.
    </adm:synopsis>
    <adm:description>
      If enabled, the SO_KEEPALIVE socket option is used to
      indicate that TCP keepalive messages should periodically be sent to the
      client to verify that the associated connection is still valid. This may
      also help prevent cases in which intermediate network hardware
      could silently drop an otherwise idle client connection, provided
      that the keepalive interval configured in the underlying operating
      system is smaller than the timeout enforced by the network hardware.
    </adm:description>
    <adm:default-behavior>
      <adm:defined>
        <adm:value>true</adm:value>
      </adm:defined>
    </adm:default-behavior>
    <adm:syntax>
      <adm:boolean />
    </adm:syntax>
    <adm:profile name="ldap">
      <ldap:attribute>
        <ldap:name>ds-cfg-use-tcp-keep-alive</ldap:name>
      </ldap:attribute>
    </adm:profile>
  </adm:property>
  <adm:property name="use-tcp-no-delay" advanced="true">
    <adm:synopsis>
      Indicates whether LDAP connections should use TCP no-delay.
    </adm:synopsis>
    <adm:description>
      If enabled, the TCP_NODELAY socket option is used to ensure
      that response messages to the client are sent immediately rather
      than potentially waiting to determine whether additional response
      messages can be sent in the same packet. In most cases, using the
      TCP_NODELAY socket option provides better performance and
      lower response times, but disabling it may help for some cases in
      which the server sends a large number of entries to a client
      in response to a search request.
    </adm:description>
    <adm:default-behavior>
      <adm:defined>
        <adm:value>true</adm:value>
      </adm:defined>
    </adm:default-behavior>
    <adm:syntax>
      <adm:boolean />
    </adm:syntax>
    <adm:profile name="ldap">
      <ldap:attribute>
        <ldap:name>ds-cfg-use-tcp-no-delay</ldap:name>
      </ldap:attribute>
    </adm:profile>
  </adm:property>
  <adm:property name="ssl-protocol" multi-valued="true" advanced="true">
    <adm:synopsis>
      Specifies the names of the SSL protocols which are allowed for
      use in SSL based LDAP connections.
    </adm:synopsis>
    <adm:requires-admin-action>
      <adm:none>
        <adm:synopsis>
          Changes to this property take effect immediately but will
          only impact new SSL LDAP connections created after the
          change.
        </adm:synopsis>
      </adm:none>
    </adm:requires-admin-action>
    <adm:default-behavior>
      <adm:alias>
        <adm:synopsis>
          Uses the default set of SSL protocols provided by the
          server's JVM.
        </adm:synopsis>
      </adm:alias>
    </adm:default-behavior>
    <adm:syntax>
      <adm:string />
    </adm:syntax>
    <adm:profile name="ldap">
      <ldap:attribute>
        <ldap:name>ds-cfg-ssl-protocol</ldap:name>
      </ldap:attribute>
    </adm:profile>
  </adm:property>
  <adm:property name="ssl-cipher-suite" multi-valued="true"
    advanced="true">
    <adm:synopsis>
      Specifies the names of the SSL cipher suites that are allowed
      for use in SSL based LDAP connections.
    </adm:synopsis>
    <adm:requires-admin-action>
      <adm:none>
        <adm:synopsis>
          Changes to this property take effect immediately but will
          only impact new SSL LDAP connections created after the
          change.
        </adm:synopsis>
      </adm:none>
    </adm:requires-admin-action>
    <adm:default-behavior>
      <adm:alias>
        <adm:synopsis>
          Uses the default set of SSL cipher suites provided by the
          server's JVM.
        </adm:synopsis>
      </adm:alias>
    </adm:default-behavior>
    <adm:syntax>
      <adm:string />
    </adm:syntax>
    <adm:profile name="ldap">
      <ldap:attribute>
        <ldap:name>ds-cfg-ssl-cipher-suite</ldap:name>
      </ldap:attribute>
    </adm:profile>
  </adm:property>
</adm:managed-object>
opends/src/admin/messages/LDAPPassThroughAuthenticationPolicyCfgDefn.properties
@@ -4,18 +4,20 @@
description=Authentication attempts will be redirected to the remote LDAP directory service based on a combination of the criteria specified in this policy and the content of the user's entry in this directory server.
constraint.1.synopsis=One or more mapped attributes must be specified when using the "mapped-bind" or "mapped-search" mapping policies.
constraint.2.synopsis=One or more search base DNs must be specified when using the "mapped-search" mapping policies.
property.connection-timeout.synopsis=Specifies the timeout used when connecting to remote LDAP director servers, performing SSL negotiation, and for individual search and bind requests.
property.connection-timeout.description=If the timeout expires then the current operation will be aborted and retried against another LDAP server if one is available.
property.java-class.synopsis=Specifies the fully-qualified name of the Java class which provides the LDAP Pass Through Authentication Policy implementation.
property.mapped-attribute.synopsis=Specifies one or more attributes in the user's entry whose value(s) will determine the bind DN used when authenticating to the remote LDAP directory service. This property is mandatory when using the "mapped-bind" or "mapped-search" mapping policies.
property.mapped-attribute.description=At least one value must be provided. All values must refer to the name or OID of an attribute type defined in the directory server schema. At least one of the named attributes must exist in a user's local entry in order for authentication to proceed. When multiple attributes or values are found in the user's entry then the behavior is determined by the mapping policy.
property.mapped-search-base-dn.synopsis=Specifies the set of base DNs below which to search for users in the remote LDAP directory service. This property is mandatory when using the "mapped-search" mapping policy.
property.mapped-search-base-dn.description=If multiple values are given, searches are performed below all specified base DNs.
property.mapped-search-bind-dn.synopsis=Specifies the bind DN which should be used for perform user searches in the remote LDAP directory service.
property.mapped-search-bind-dn.synopsis=Specifies the bind DN which should be used to perform user searches in the remote LDAP directory service.
property.mapped-search-bind-dn.default-behavior.alias.synopsis=Searches will be performed anonymously.
property.mapped-search-bind-password.synopsis=Specifies the bind password which should be used for perform user searches in the remote LDAP directory service.
property.mapped-search-bind-password.synopsis=Specifies the bind password which should be used to perform user searches in the remote LDAP directory service.
property.mapped-search-bind-password.default-behavior.alias.synopsis=Searches will be performed anonymously.
property.mapping-policy.synopsis=Specifies the mapping algorithm for obtaining the bind DN from the user's entry.
property.mapping-policy.syntax.enumeration.value.mapped-bind.synopsis=Bind to the remote LDAP directory service using a DN obtained from an attribute in the user's entry. This policy will check each attribute named in the "match-attribute" property. If more than one attribute or value is present then the first one will be used.
property.mapping-policy.syntax.enumeration.value.mapped-search.synopsis=Bind to the remote LDAP directory service using the DN of an entry obtained using a search against the remote LDAP directory service. The search filter will comprise of an equality matching filter whose attribute type is the "match-attribute" property, and whose assertion value is the attribute value obtained from the user's entry. If more than one attribute or value is present then the filter will be composed of multiple equality filters combined using a logical OR (union).
property.mapping-policy.syntax.enumeration.value.mapped-bind.synopsis=Bind to the remote LDAP directory service using a DN obtained from an attribute in the user's entry. This policy will check each attribute named in the "mapped-attribute" property. If more than one attribute or value is present then the first one will be used.
property.mapping-policy.syntax.enumeration.value.mapped-search.synopsis=Bind to the remote LDAP directory service using the DN of an entry obtained using a search against the remote LDAP directory service. The search filter will comprise of an equality matching filter whose attribute type is the "mapped-attribute" property, and whose assertion value is the attribute value obtained from the user's entry. If more than one attribute or value is present then the filter will be composed of multiple equality filters combined using a logical OR (union).
property.mapping-policy.syntax.enumeration.value.unmapped.synopsis=Bind to the remote LDAP directory service using the DN of the user's entry in this directory server.
property.primary-remote-ldap-server.synopsis=Specifies the primary list of remote LDAP servers which should be used for pass through authentication.
property.primary-remote-ldap-server.description=If more than one LDAP server is specified then operations may be distributed across them. If all of the primary LDAP servers are unavailable then operations will fail-over to the set of secondary LDAP servers, if defined.
@@ -24,3 +26,18 @@
property.secondary-remote-ldap-server.description=If more than one LDAP server is specified then operations may be distributed across them. Operations will be rerouted to the primary LDAP servers as soon as they are determined to be available.
property.secondary-remote-ldap-server.default-behavior.alias.synopsis=No secondary LDAP servers.
property.secondary-remote-ldap-server.syntax.string.pattern.synopsis=A host name followed by a ":" and a port number.
property.ssl-cipher-suite.synopsis=Specifies the names of the SSL cipher suites that are allowed for use in SSL based LDAP connections.
property.ssl-cipher-suite.default-behavior.alias.synopsis=Uses the default set of SSL cipher suites provided by the server's JVM.
property.ssl-cipher-suite.requires-admin-action.synopsis=Changes to this property take effect immediately but will only impact new SSL LDAP connections created after the change.
property.ssl-protocol.synopsis=Specifies the names of the SSL protocols which are allowed for use in SSL based LDAP connections.
property.ssl-protocol.default-behavior.alias.synopsis=Uses the default set of SSL protocols provided by the server's JVM.
property.ssl-protocol.requires-admin-action.synopsis=Changes to this property take effect immediately but will only impact new SSL LDAP connections created after the change.
property.trust-manager-provider.synopsis=Specifies the name of the trust manager that should be used when negotiating SSL connections with remote LDAP directory servers.
property.trust-manager-provider.requires-admin-action.synopsis=Changes to this property take effect immediately, but only impact subsequent SSL connection negotiations.
property.trust-manager-provider.syntax.aggregation.constraint-synopsis=The referenced trust manager provider must be enabled when SSL is enabled.
property.use-ssl.synopsis=Indicates whether the LDAP Pass Through Authentication Policy should use SSL.
property.use-ssl.description=If enabled, the LDAP Pass Through Authentication Policy will use SSL to encrypt communication with the clients.
property.use-tcp-keep-alive.synopsis=Indicates whether LDAP connections should use TCP keep-alive.
property.use-tcp-keep-alive.description=If enabled, the SO_KEEPALIVE socket option is used to indicate that TCP keepalive messages should periodically be sent to the client to verify that the associated connection is still valid. This may also help prevent cases in which intermediate network hardware could silently drop an otherwise idle client connection, provided that the keepalive interval configured in the underlying operating system is smaller than the timeout enforced by the network hardware.
property.use-tcp-no-delay.synopsis=Indicates whether LDAP connections should use TCP no-delay.
property.use-tcp-no-delay.description=If enabled, the TCP_NODELAY socket option is used to ensure that response messages to the client are sent immediately rather than potentially waiting to determine whether additional response messages can be sent in the same packet. In most cases, using the TCP_NODELAY socket option provides better performance and lower response times, but disabling it may help for some cases in which the server sends a large number of entries to a client in response to a search request.