[16.0.0.3 and later]

Desarrollo de un repositorio de usuario personalizado para Liberty

Puede desarrollar un repositorio de usuarios personalizados como una característica de usuario, implementando la interfaz com.ibm.wsspi.security.wim.CustomRepository en el servidor Liberty. La interfaz del repositorio personalizado permite el soporte para la mayoría de tipos de repositorio de cuentas.

Procedimiento

  1. Cree una clase que implemente la interfaz del repositorio personalizado, com.ibm.wsspi.security.wim.CustomRepository. Esta clase proporciona las operaciones de repositorio. Si desea más información sobre la interfaz, consulte la información de la SPI com.ibm.websphere.appserver.spi.federatedRepository_1.0 en Interfaces de programación o en la documentación Java que se proporciona con el producto en el directorio ${wlp.install.dir}/dev/spi/ibm/.

    Si desea un ejemplo de implementación de la interfaz, consulte Ejemplo de interfaz de repositorio.

  2. Convierta la clase de implementación en un servicio OSGi. Para obtener más información, consulte Declaración de los servicios en los servicios declarativos de OSGi.
  3. Empaquete el repositorio de usuarios personalizados como un paquete OSGi y exporte el servicio del repositorio de usuarios. Si desea más información sobre crear un paquete OSGi, consulte Creación de un paquete de servicios OSGi.
  4. Cree un archivo de manifiesto de característica para incluir el paquete OSGi. Para obtener más información, consulte Extensión del producto.
  5. Una vez que la característica se ha instalado en la ubicación de la extensión de producto del usuario, añada la característica del repositorio personalizado en el archivo de configuración server.xml. Además, añada las características appSecurity-2.0 y federatedRegistry-1.0, que son necesarias para el repositorio personalizado. Por ejemplo:
    <featureManager>
    	...
    	<feature>usr:customRepositorySample-1.0</feature>
    	<feature>appSecurity-2.0</feature>
    	<feature>federatedRegistry-1.0</feature>
    </featureManager>
  6. Opcional: Si desea definir atributos personalizados para usuarios y grupos, configure los atributos en un elemento federatedRepository en el archivo server.xml.
    En el ejemplo siguiente, el atributo myProp está definido para la entidad PersonAccount y el atributo myGroupProp está definido para la entidad Group.
    <federatedRepository>
       <primaryRealm name="sampleCustomRepositoryRealm">
           <participatingBaseEntry name="o=ibm,c=us"/>
       </primaryRealm>
       <extendedProperty dataType="String" name="myProp" entityType="PersonAccount"></extendedProperty>
       <extendedProperty dataType="String" name="myGroupProp" entityType="Group"></extendedProperty>
    </federatedRepository>

Ejemplo de interfaz de repositorio

package com.myorg;

import java.util.Map;
import com.ibm.wsspi.security.wim.exception.WIMException;
import com.ibm.wsspi.security.wim.model.Root;
import com.ibm.wsspi.security.wim.CustomRepository;

public class MyCustomRepository implements CustomRepository {

    public CustomRepository() {
        System.out.println(“In my custom repository implementation”);
    }

    @Override
    public Root create(Root arg0) throws WIMException {
        System.out.println(“In my create method”);
        //Añadir aquí su código
    }

    @Override
    public Root delete(Root arg0) throws WIMException {
        System.out.println(“In my delete method”);
        //Añadir aquí su código
    }

    @Override
    public Root get(Root arg0) throws WIMException {
        System.out.println(“In my get method”);
        //Añadir aquí su código
    }

    @Override
    public String getRealm() {
        return "customRepository";
    }

    @Override
    public Root login(Root arg0) throws WIMException {
        System.out.println(“In my login method”);
        //Añadir aquí su código
    }

    @Override
    public Root search(Root arg0) throws WIMException {
        System.out.println(“In my search method”);
        //Añadir aquí su código
    }
 
    @Override
    public Root update(Root arg0) throws WIMException {
        System.out.println(“In my update method”);
        //Añadir aquí su código
    }

    @Override
    public Map<String, String> getRepositoryBaseEntries() {
        System.out.println(“In my getRepositoryBaseEntries method”);
        //Añadir aquí su código
    }

    @Override
    public String[] getRepositoriesForGroups() {
        System.out.println(“In my getRepositoriesForGroups method”);
        //Añadir aquí su código
    }
}

Icono que indica el tipo de tema Tema de tarea

Nombre de archivo: twlp_sec_cust_repository.html