[16.0.0.3 and later]

Développement d'un référentiel d'utilisateurs personnalisé pour Liberty

Vous pouvez développer un référentiel d'utilisateurs personnalisé comme fonction d'utilisateur en implémentant l'interface com.ibm.wsspi.security.wim.CustomRepository dans le serveur Liberty. L'interface du référentiel personnalisé permet la prise en charge de la plupart des types de référentiels de compte.

Procédure

  1. Créez une classe implémentant l'interface de référentiel personnalisée com.ibm.wsspi.security.wim.CustomRepository. Cette classe fournit les opérations de référentiel. Pour obtenir des informations sur l'interface, veuillez vous reporter aux informations sur l'interface SPI com.ibm.websphere.appserver.spi.federatedRepository_1.0 figurant dans Programmation d'interfaces ou dans la documentation Java fournie avec le produit dans le répertoire ${wlp.install.dir}/dev/spi/ibm/.

    Pour obtenir un exemple d'implémentation d'interface, voir Exemple d'interface de référentiel.

  2. Convertissez la classe d'implémentation en service OSGi. Pour plus d'informations, voir Déclaration de vos services auprès des services déclaratifs OSGi.
  3. Conditionnez le référentiel d'utilisateurs personnalisé sous forme de bundle OSGi et exportez le service de référentiel d'utilisateurs. Pour des informations sur la création d'un bundle OSGi, voir Création d'un regroupement de services OSGi.
  4. Créez un fichier manifeste de fonction pour inclure le bundle OSGi. Pour plus d'informations, voir Extension de produit.
  5. Une fois la fonction installée dans l'emplacement d'extension du produit utilisateur, ajoutez votre fonction de référentiel personnalisée dans le fichier de configuration server.xml. Ajoutez également les fonctions appSecurity-2.0 et federatedRegistry-1.0 requises pour le référentiel personnalisé. Par exemple :
    <featureManager>
    	...
    	<feature>usr:customRepositorySample-1.0</feature>
    	<feature>appSecurity-2.0</feature>
    	<feature>federatedRegistry-1.0</feature>
    </featureManager>
  6. Facultatif : Si vous souhaitez définir des attributs personnalisés pour des utilisateurs et des groupes, configurez les attributs dans un élément federatedRepository du fichier server.xml.
    Dans l'exemple suivant, l'attribut myProp est défini pour l'entité PersonAccount et l'attribut myGroupProp est défini pour l'entité 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>

Exemple d'interface de référentiel

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”);
        //Add your code here
    }

    @Override
    public Root delete(Root arg0) throws WIMException {
        System.out.println(“In my delete method”);
        //Add your code here
    }

    @Override
    public Root get(Root arg0) throws WIMException {
        System.out.println(“In my get method”);
        //Add your code here
    }

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

    @Override
    public Root login(Root arg0) throws WIMException {
        System.out.println(“In my login method”);
        //Add your code here
    }

    @Override
    public Root search(Root arg0) throws WIMException {
        System.out.println(“In my search method”);
        //Add your code here
    }
 
    @Override
    public Root update(Root arg0) throws WIMException {
        System.out.println(“In my update method”);
        //Add your code here
    }

    @Override
    public Map<String, String> getRepositoryBaseEntries() {
        System.out.println(“In my getRepositoryBaseEntries method”);
        //Add your code here
    }

    @Override
    public String[] getRepositoriesForGroups() {
        System.out.println(“In my getRepositoriesForGroups method”);
        //Add your code here
    }
}

Icône indiquant le type de rubrique Rubrique Tâche

Nom du fichier : twlp_sec_cust_repository.html