[16.0.0.3 und höher]

Angepasstes Benutzerrepositry für Liberty entwickeln

Sie können ein angepasstes Benutzerrepository als Benutzerfeature entwickeln, indem Sie die Schnittstelle com.ibm.wsspi.security.wim.CustomRepository im Liberty-Server implementieren. Die angepasste Repository-Schnittstelle aktiviert die Unterstützung für die meisten Typen von Account-Repositorys.

Vorgehensweise

  1. Erstellen Sie eine Klasse, die die angepasste Repository-Schnittstelle com.ibm.wsspi.security.wim.CustomRepository implementiert. Diese Klasse enthält die Repository-Operationen. Einzelheiten zu der Schnittstelle finden Sie in den Informationen zur SPI com.ibm.websphere.appserver.spi.federatedRepository_1.0 im Abschnitt Programmierschnittstellen oder in der Java-Dokumentation, die zusammen mit dem Produkt im Verzeichnis ${wlp.install.dir}/dev/spi/ibm/ bereitgestellt wird.

    Ein Beispiel für die Implementierung der Schnittstelle finden Sie im Abschnitt Beispiel für eine Repository-Schnittstelle.

  2. Wandeln Sie die Implementierungsklasse in einen OSGi-Service um. Weitere Informationen finden Sie unter Services in OSGi Declarative Services deklarieren.
  3. Packen Sie das angepasste Benutzerrepository als OSGi-Bundle und exportieren Sie den Benutzerrepository-Service. Weitere Informationen zum Erstellen eines OSGi-Bundles finden Sie unter Creating an OSGi service bundle.
  4. Erstellen Sie eine Featuremanifestdatei, um das OSGi-Bundle einzuschließen. Weitere Informationen finden Sie im Artikel Produkterweiterung.
  5. Fügen Sie Ihr angepasstes Repository-Feature nach der Installation des Features im Verzeichnis der benutzerspezifischen Produkterweiterung in der Konfigurationsdatei server.xml hinzu. Fügen Sie auch die Features appSecurity-2.0 und federatedRegistry-1.0 hinzu, die für das angepasste Repository erforderlich sind. Beispiel:
    <featureManager>
    	...
    	<feature>usr:customRepositorySample-1.0</feature>
    	<feature>appSecurity-2.0</feature>
    	<feature>federatedRegistry-1.0</feature>
    </featureManager>
  6. Optional: Wenn Sie angepasste Attribute für Benutzer und Gruppen definieren möchten, konfigurieren Sie die Attribute in einem federatedRepository-Element in der Datei server.xml.
    Im folgenden Beispiel wird das Attribut myProp für die Entität PersonAccount und das Attribut myGroupProp für die Entität Group definiert.
    <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>

Beispiel für eine Repository-Schnittstelle

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”);
        // Eigenen Code hier hinzufügen
    }

    @Override
    public Root delete(Root arg0) throws WIMException {
        System.out.println(“In my delete method”);
        // Eigenen Code hier hinzufügen
    }

    @Override
    public Root get(Root arg0) throws WIMException {
        System.out.println(“In my get method”);
        // Eigenen Code hier hinzufügen
    }

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

    @Override
    public Root login(Root arg0) throws WIMException {
        System.out.println(“In my login method”);
        // Eigenen Code hier hinzufügen
    }

    @Override
    public Root search(Root arg0) throws WIMException {
        System.out.println(“In my search method”);
        // Eigenen Code hier hinzufügen
    }
 
    @Override
    public Root update(Root arg0) throws WIMException {
        System.out.println(“In my update method”);
        // Eigenen Code hier hinzufügen
    }

    @Override
    public Map<String, String> getRepositoryBaseEntries() {
        System.out.println(“In my getRepositoryBaseEntries method”);
        // Eigenen Code hier hinzufügen
    }

    @Override
    public String[] getRepositoriesForGroups() {
        System.out.println(“In my getRepositoriesForGroups method”);
        // Eigenen Code hier hinzufügen
    }
}

Symbol das den Typ des Artikels anzeigt. Taskartikel

Dateiname: twlp_sec_cust_repository.html