Configuración de registros de usuarios LDAP con el perfil Liberty

Puede configurar uno o varios servidores LDAP (Lightweight Directory Access Protocol) con el perfil 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 la aplicación en el perfil Liberty. Para ello, debe añadir la característica appSecurity-2.0 al archivo server.xml y especificar, en el archivo server.xml, la característica ldapRegistry-3.0 así como 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 el perfil 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.

    Puede configurar el servidor LDAP en el archivo file 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 el perfil 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="(&(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=" />  
      Evite problemas: [Actualizado en julio de 2013]En este ejemplo, groupMemberIdMap="memberof:member" es sensible a las mayúsculas y minúsculas. [Actualizado en julio de 2013]

    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 el perfil Liberty, consulte Modalidad de correlación de certificados LDAP.
  6. Opcional: [8.5.5.3 o posterior]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>
  7. 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 Elementos de configuración en el archivo server.xml.

  8. 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 en todos los repositorios federados, de lo contrario se producirá un error en las operaciones de registro de usuarios.
    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 Elementos de configuración en el archivo server.xml.

  9. 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 que utiliza 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.
    [8.5.5.2 o posterior]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

Términos y condiciones para centros de información | Comentarios


Icono de indicación de fecha y hora Última actualización: 15 de junio de 2015
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=phil&product=was-libcore-mp&topic=twlp_sec_ldap
Nombre de archivo:twlp_sec_ldap.html