Configuración de registros de usuarios LDAP en Liberty

Puede configurar uno o más servidores LDAP (Lightweight Directory Access Protocol) con Liberty para la autenticación.

Antes de empezar

Asegúrese de que el servidor LDAP está activo y en ejecución y de que el nombre de host y el número de puerto del servidor LDAP están ya en la lista conocida.

Acerca de esta tarea

Puede utilizar un servidor LDAP existente para la autenticación de aplicaciones en Liberty. Para hacer esto, añada la característica appSecurity-2.0 al archivo server.xml y especifique, en el archivo server.xml, la característica ldapRegistry-3.0 y la información de configuración para conectarse al servidor LDAP.

Evite problemas: Hay varios ejemplos de configuración se seguridad en el sitio web de WASdev.net que sirven de referencia cuando se configura la seguridad para sus aplicaciones en Liberty.Para obtener más información, consulte el enlace en la referencia relacionada con los fragmentos de código de configuración.

Procedimiento

  1. Añada las características de Liberty appSecurity-2.0 y ldapRegistry-3.0 al archivo server.xml.
  2. Opcional: Para comunicarse con un servidor LDAP habilitado para SSL, añada la característica de Liberty ssl-1.0 en el archivo server.xml.
  3. Opcional: Copie el almacén de confianza en el directorio de configuración del servidor. Por ejemplo, puede utilizar la variable ${server.config.dir}.

    Para que la comunicación SSL con un servidor LDAP sea satisfactoria, se debe añadir el certificado de firmante para el servidor LDAP al almacén de confianza al que el atributo sslAlias del elemento <ldapRegistry> hace referencia. En los ejemplos siguientes, se debe añadir el certificado de firmante a LdapSSLTrustStore.jks.

  4. Configure la entrada LDAP para el servidor.

    Si no desea SSL para el servidor LDAP, elimine todas las líneas de SSL y relacionadas con el almacén de claves de los ejemplos siguientes.

    Configure el servidor LDAP en el archivo server.xml o utilizando WebSphere Application Server Developer Tools for Eclipse. Hay varios ejemplos de configuración se seguridad en el sitio web de WASdev.net que sirven de referencia cuando se configura la seguridad para sus aplicaciones en Liberty.
    • Para IBM® Directory Server:
      <ldapRegistry id="ldap" realm="SampleLdapIDSRealm" 
          host="ldapserver.mycity.mycompany.com" port="389" ignoreCase="true" 
          baseDN="o=mycompany,c=us" 
          ldapType="IBM Tivoli Directory Server"
          sslEnabled="true" 
          sslRef="LDAPSSLSettings">
          <idsFilters
          	userFilter="(&amp;(uid=%v)(objectclass=ePerson))" 
          	groupFilter="(&amp;(cn=%v)(|(objectclass=groupOfNames)
                           (objectclass=groupOfUniqueNames)(objectclass=groupOfURLs)))"
          	userIdMap="*:uid" 
          	groupIdMap="*:cn" 
          	groupMemberIdMap="mycompany-allGroups:member;mycompany-allGroups:uniqueMember;
      			  groupOfNames:member;groupOfUniqueNames:uniqueMember">
          </idsFilters>    
      </ldapRegistry>
      <ssl id="LDAPSSLSettings" keyStoreRef="LDAPKeyStore" trustStoreRef="LDAPTrustStore" /> 
      
      <keyStore id="LDAPKeyStore" location="${server.config.dir}/LdapSSLKeyStore.jks" 
           type="JKS" password="{xor}CDo9Hgw=" /> 
      <keyStore id="LDAPTrustStore" location="${server.config.dir}/LdapSSLTrustStore.jks" 
          type="JKS" password="{xor}CDo9Hgw=" />   
    • Para Microsoft Active Directory Server:
      <ldapRegistry id="ldap" realm="SampleLdapADRealm" 
          host="ldapserver.mycity.mycompany.com" port="389" ignoreCase="true" 
          baseDN="cn=users,dc=adtest,dc=mycity,dc=mycompany,dc=com" 
          bindDN="cn=testuser,cn=users,dc=adtest,dc=mycity,dc=mycompany,dc=com" 
          bindPassword="testuserpwd"
          ldapType="Microsoft Active Directory" 
          sslEnabled="true" 
          sslRef="LDAPSSLSettings"> 
          <activedFilters
          userFilter="(&amp;(sAMAccountName=%v)(objectcategory=user))"
      groupFilter="(&amp;(cn=%v)(objectcategory=group))" 
         userIdMap="user:sAMAccountName" 
          groupIdMap="*:cn" 
          groupMemberIdMap="memberOf:member" >
      </activedFilters>
          </ldapRegistry>
      
      <ssl id="LDAPSSLSettings" keyStoreRef="LDAPKeyStore" trustStoreRef="LDAPTrustStore" /> 
      
      <keyStore id="LDAPKeyStore" location="${server.config.dir}/LdapSSLKeyStore.jks" 
                type="JKS" password="{xor}CDo9Hgw=" /> 
      <keyStore id="LDAPTrustStore" location="${server.config.dir}/LdapSSLTrustStore.jks" 
                type="JKS" password="{xor}CDo9Hgw=" />  

    Si utiliza WebSphere Application Server Developer Tools for Eclipse, la contraseña bindPassword se codifica automáticamente. Si edita el archivo server.xml directamente, puede utilizar el mandato securityUtility encode para codificar la contraseña bindPassword automáticamente. La herramienta de línea de mandatos securityUtility está disponible en el directorio $INSTALL_ROOT/bin. Cuando ejecuta el mandato securityUtility encode, debe proporcionar la contraseña para codificarse como una entrada en la línea de mandatos o, si no se especifican argumentos, el programa de utilidad le solicitará la contraseña. A continuación, la herramienta genera el valor codificado. Copie el valor de salida de la herramienta y utilice dicho valor para la contraseña de bindPassword.

  5. Opcional: Configure la modalidad de filtro de certificado para el servidor LDAP.
    <ldapRegistry id="LDAP" realm="SampleLdapIDSRealm" 
          host="myldap.ibm.com" port="389" ignoreCase="true" 
          baseDN="o=ibm,c=us" 
          ldapType="IBM Tivoli Directory Server" searchTimeout="8m"
          certificateMapMode="CERTIFICATE_FILTER" 
          certificateFilter="uid=${SubjectCN}"> 
          <idsFilters
          userFilter="(&amp;(uid=%v)(objectclass=ePerson))" 
          groupFilter="(&amp;(cn=%v)(|(objectclass=groupOfNames)
              (objectclass=groupOfUniqueNames)(objectclass=groupOfURLs)))" 
          userIdMap="*:uid" 
          groupIdMap="*:cn" 
          groupMemberIdMap="ibm-allGroups:member;ibm-allGroups:uniqueMember;
              groupOfNames:member;groupOfUniqueNames:uniqueMember">
    </idsFilters>
          </ldapRegistry>
    Para obtener más información sobre la modalidad de correlación de certificados en Liberty, consulte Modalidad de correlación de certificados LDAP.
  6. Opcional: Puede definir la correlación entre atributos LDAP y los atributos de esquema del registro de usuario.

    Una vez que se haya configurado la correlación, cuando se utiliza el atributo de registro de usuarios para cualquier operación para la cual se ha definido la correlación, el valor del atributo del registro de usuarios será el valor del atributo LDAP. En el ejemplo siguiente, puede ver que la correlación está definida para el atributo LDAP <userPassword> con la propiedad del registro de usuarios <password> en el archivo server.xml. El atributo <defaultValue> es opcional.

    <ldapRegistry id="LDAP" realm="SampleLdapIDSRealm" 
          host="myldap.ibm.com" port="389" ignoreCase="true" 
          baseDN="o=ibm,c=us" 
          ldapType="IBM Tivoli Directory Server" searchTimeout="8m">
          <attributeConfiguration>
                 <attribute name="userPassword" propertyName="password" entityType="PersonAccount" defaultValue="xyz123"/>
          </attributeConfiguration>
    </ldapRegistry>
  7. Opcional: Puede definir la correlación entre los atributos LDAP y el atributo <externalId> del registro de usuarios.

    Puede definir la correlación entre los atributos LDAP y el atributo <externalId> del registro de usuarios. Después de configurar la correlación, cuando se utiliza el atributo <externalId> de registro de usuarios para cualquier operación, el valor será el equivalente al valor del atributo LDAP que se correlaciona. El código de ejemplo siguiente muestra la correlación que se ha definido para el atributo <externalId> del registro de usuarios con el atributo <distinguishedName> LDAP para el tipo de entidad <PersonAccount>. El atributo <autoGenerate> es opcional y el valor es false de forma predeterminada.

    <ldapRegistry id="LDAP" realm="SampleLdapIDSRealm" 
          host="myldap.ibm.com" port="389" ignoreCase="true" 
          baseDN="o=ibm,c=us" 
          ldapType="IBM Tivoli Directory Server" searchTimeout="8m">
          <attributeConfiguration>
                 <externalIdAttribute name="distinguishedName" entityType="PersonAccount" autoGenerate="false"></externalIdAttribute>
          </attributeConfiguration>
    </ldapRegistry>
  8. Opcional: Configure la migración tras error para varios servidores LDAP.
    <ldapRegistry id="LDAP" realm="SampleLdapIDSRealm"
        	host="ldapserver1.mycity.mycompany.com" port="389" ignoreCase="true"
         	baseDN="o=ibm,c=us" ldapType="IBM Tivoli Directory Server" idsFilters="ibm_dir_server">
    	<failoverServers name="failoverLdapServersGroup1">
    		<server host="ldapserver2.mycity.mycompany.com" port="389" />
    		<server host="ldapserver3.mycity.mycompany.com" port="389" />
    	</failoverServers>
    	<failoverServers name="failoverLdapServersGroup2">
    		<server host="ldapserver4.mycity.mycompany.com" port="389" />
    	</failoverServers>
    </ldapRegistry>
    
    <idsLdapFilterProperties id="ibm_dir_server"
    	    userFilter="(&amp;(uid=%v)(objectclass=ePerson))"
    	    groupFilter="(&amp;(cn=%v)(|(objectclass=groupOfNames)
                     (objectclass=groupOfUniqueNames)(objectclass=groupOfURLs)))"
    	    userIdMap="*:uid" groupIdMap="*:cn"
    	    groupMemberIdMap="ibm-allGroups:member;ibm-allGroups:uniqueMember;
                          groupOfNames:member;groupOfUniqueNames:uniqueMember">
    </idsLdapFilterProperties>

    Para obtener más información acerca de los elementos ldapRegistry y failoverServers, consulte la sección LDAP User Registry.

  9. Opcional: Configure varios registros LDAP. Si se configuran varios registros LDAP en el archivo server.xml, se federan automáticamente. Asegúrese de que los usuarios son exclusivos entre todos los repositorios federados, de lo contrario, las operaciones del registro de usuarios no se realizan correctamente.
    Nota: Cuando se utilizan varios repositorios LDAP federados, cada repositorio debe definir un baseDN exclusivo.
    <ldapRegistry host="ldapserver1.mycity1.mycompany.com" baseDN="o=mycompany,c=us"
        port="123" ldapType="IBM Tivoli Directory Server"> 
    </ldapRegistry>
    
    <ldapRegistry host="ldapserver2.mycity2.mycompany.com" 
        baseDN="cn=users,dc=secfvt2,dc=mycity2,dc=mycompany,dc=com" 
        port="456"
        ldapType="Microsoft Active Directory" 
        bindDN="cn=testuser,cn=users,dc=secfvt2,dc=mycity2,dc=mycompany,dc=com" 
        bindPassword="{xor}KzosKyosOi0vKDs=">
    </ldapRegistry>
    Nota:
    • No es obligatorio especificar el elemento federatedRepository para federar varios registros LDAP porque se federan automáticamente. Si se especifica el elemento federatedRepository para configurar los elementos participatingBaseEntry y primaryRealm, las operaciones del registro de usuarios se realizan solo en los repositorios definidos en el elemento primaryRealm. Puede definir las correlaciones de propiedades de entrada y salida para distintas API de registro de usuarios en el elemento primaryRealm.
    • El atributo name del elemento participatingBaseEntry debe ser el mismo que el valor del atributo baseDN especificado en el elemento ldapRegistry. En el ejemplo que figura a continuación, se configuran los atributos baseDN y name para el registro LDAP en el host ldapserver1.mycity1.mycompany.com. El valor del atributo baseDN debe ser el mismo que el subárbol del servidor LDAP y el valor del atributo name debe ser igual que el del subárbol del registro de usuarios federado. Es opcional especificar el atributo name. De forma predeterminada, el atributo name utiliza el mismo valor que el atributo baseDN. Si se especifica el atributo name en el elemento ldapRegistry, el atributo name del elemento participatingBaseEntry debe utilizar el mismo valor que el atributo name del elemento ldapRegistry.
    <ldapRegistry host="ldapserver1.mycity1.mycompany.com" baseDN="o=mycompany,ou=myou,c=us"
        port="123" ldapType="IBM Tivoli Directory Server" name="o=mybaseentry"> 
    </ldapRegistry>
    
    <ldapRegistry host="ldapserver2.mycity2.mycompany.com" 
        baseDN="cn=users,dc=secfvt2,dc=mycity2,dc=mycompany,dc=com" 
        port="456"
        ldapType="Microsoft Active Directory" 
        bindDN="cn=testuser,cn=users,dc=secfvt2,dc=mycity2,dc=mycompany,dc=com" 
        bindPassword="{xor}KzosKyosOi0vKDs=">
    </ldapRegistry>
    
    <federatedRepository>
    	 <primaryRealm name="RealmName" delimiter="@" allowOpIfRepoDown="true">
    	 	<participatingBaseEntry name="o=mybaseentry"/>
    		 <participatingBaseEntry name="cn=users,dc=secfvt2,dc=mycity2,dc=mycompany,dc=com"/>
    	 	 <uniqueUserIdMapping inputProperty="uniqueName" outputProperty="uniqueName"/>
    	 	 <userSecurityNameMapping inputProperty="principalName" outputProperty="principalName"/>
            		 <userDisplayNameMapping inputProperty="principalName" outputProperty="principalName"/>
    		 <uniqueGroupIdMapping inputProperty="uniqueName" outputProperty="uniqueName"/>
            		 <groupSecurityNameMapping inputProperty="cn" outputProperty="cn"/>
            		 <groupDisplayNameMapping inputProperty="cn" outputProperty="cn"/>
            	</primaryRealm>
    </federatedRepository>

    Para obtener más información sobre los elementos ldapRegistry federados, consulte LDAP User Registry.

  10. Opcional: Puede configurar otros atributos opcionales para el registro LDAP, como contextPool o ldapCache, como se muestra en el ejemplo siguiente:
    <ldapRegistry id="IBMDirectoryServerLDAP" realm="SampleLdapIDSRealm"
            host="host.domain.com" port="389" ignoreCase="true"
            baseDN="o=domain,c=us"
            bindDN="cn=testuser,o=domain,c=us"
            bindPassword="mypassword"
            ldapType="IBM Tivoli Directory Server"
            searchTimeout="8m">
        <contextPool enabled="true" initialSize="1" maxSize="0" timeout="0s" waitTime="3000ms" preferredSize="3"/>
        <ldapCache>
            <attributesCache size="4000" timeout="1200s" enabled="true" sizeLimit="2000"/>
            <searchResultsCache size="2000" timeout="600s" enabled="true" resultsSizeLimit="1000"/>
        </ldapCache>
    </ldapRegistry>
    Nota:
    • El registro de usuarios federado utiliza el mecanismo de agrupación de contextos para mejorar el rendimiento del acceso simultáneo a un servidor LDAP. La agrupación de contextos funciona a un nivel superior que la agrupación de conexiones. Cada entrada de contexto de la agrupación de contexto en una conexión de socket con el servidor LDAP. Las credenciales de enlace utilizadas por esta agrupación se especifican al configurar el registro LDAP.
    • El repositorio federado utiliza el mecanismo de almacenamiento en memoria caché para mejorar el rendimiento. Almacena información en la memoria caché acerca de los usuarios y grupos LDAP basados en las operaciones realizadas por el usuario. Por ejemplo, si realiza una operación de búsqueda de los usuarios y grupos LDAP, el resultado de la operación se almacena en memoria caché. Puede habilitar el elemento ldapCache en el archivo server.xml como se muestra en el ejemplo anterior.
    Sugerencia de resolución de problemas: Para resolver los problemas de autenticación LDAP, utilice las especificaciones de rastreo siguientes del archivo bootstrap.properties:
    com.ibm.ws.security.wim.*=all:com.ibm.websphere.security.wim.*=all

Icono que indica el tipo de tema Tema de tarea



Icono de indicación de fecha y hora Última actualización: Tuesday, 6 December 2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-libcore-mp&topic=twlp_sec_ldap
Nombre de archivo:twlp_sec_ldap.html