Mustercode für die Verwendung von Verwaltungsberechtigungen für föderierte Repositorys

Hier finden Sie die umfassenden Schritte, Befehle und Mustercode-Snippets, die benötigt werden, um Benutzern, bei denen es sich nicht um WebSphere Application Server-Administratoren handelt, den Zugriff auf die Virtual Member Manager-APIs in einer Umgebung mit mehreren Sicherheitsdomänen zu ermöglichen.

Verwaltungsberechtigungen für föderierte Repositorys ermöglichen es Benutzern, bei denen es sich nicht um WebSphere Application Server-Administratoren handelt, Benutzer und Gruppen zu verwalten sowie in Verwaltungs- und Anwendungsdomänen auf andere Virtual Member Manager-APIs zuzugreifen. Informationen zu den vordefinierten Rollen und deren Berechtigungen enthält das Thema Sicherheit bereitstellen in der Dokumentation zu Virtual Member Manager. Zur Implementierung dieser Funktion können Sie die folgenden wsadmin-Befehle verwenden: mapIdMgrUserToRole, mapIdMgrGroupToRole, removeIdMgrUsersFromRole, removeIdMgrGroupsFromRole, listIdMgrUsersForRoles. Weitere Informationen zu diesen Befehlen können Sie dem Thema über die Befehlsgruppe "IdMgrConfig" für das Objekt "AdminTask" im Information Center von WebSphere Application Server entnehmen.

Dieses Beispielszenario deckt die folgenden Schritte ab:

  1. Die Anwendung "wimperdomain" wird auf dem Server installiert, der zum Geltungsbereich der Sicherheitsdomäne gehört. In einer Umgebung mit mehreren Sicherheitsdomänen müssen Sie auf jedem Zielserver, bei dem der Servergeltungsbereich dieser Sicherheitsdomäne zugeordnet ist, die EJB von Virtual Member Manager implementieren, um eine Referenz auf die Virtual Member Manager-Instanz in dieser Domäne zu erhalten. Dieses Verfahren versetzt Sie in die Lage, Virtual Member Manager-APIs für eine bestimmte Domäne über die EJB aufzurufen. Nur Benutzer mit den erforderlichen Zugriffsrollen für Virtual Member Manager-APIs oder Superuser in dieser Domäne können die entsprechenden APIs aufrufen.
  2. In der Benutzerregistry wird ein Benutzer erstellt, der der Sicherheitsdomäne entspricht. Sie müssen als WebSphere Application Server-Administrator angemeldet sein.
  3. Dem Benutzer wird eine Virtual Member Manager-Rolle zugeordnet. Gültige vordefinierte Virtual Member Manager-Rollen sind "IdMgrAdmin", "IdMgrWriter" und "IdMgrReader".
  4. Mit der EJB-Suche wird auf die Virtual Member Manager-Instanz zugegriffen, die der Sicherheitsdomäne entspricht. In einer Netzimplementierungsumgebung muss zunächst mit dem absoluten Pfad des Kontextes nach der EJB auf dem verwalteten Serverknoten gesucht werden (z. B. cell/nodes/mein_knoten/servers/server1/ejbna, wobei ejbna der JNDI-Name der Virtual Member Manager-EJB auf dem verwalteten Server "server1" ist).
  5. Für die Virtual Member Manager-Instanz, die der Sicherheitsdomäne entspricht, wird unter Verwendung des Benutzers, dem eine Virtual Member Manager-Rolle zugeordnet ist, eine Operation ausgeführt.

Voraussetzungen

Stellen Sie sicher, dass Sie die Informationen gelesen und die Schritte ausgeführt haben, die im Thema Voraussetzungen für die Programmierung beschrieben sind.

Sie müssen die folgenden Konfigurationsschritte ausführen, bevor Sie den Mustercode verwenden. Starten Sie das Tool "wsadmin" und führen Sie die folgenden Befehle aus. Ersetzen Sie hierbei die Variablen durch die tatsächlichen Werte, die Sie verwenden wollen.

  1. Die Anwendung "wimperdomain" wird auf dem Server installiert, der zum Geltungsbereich der Sicherheitsdomäne gehört. Die Anwendung "wimperdomain.ear" ist unter dem Verzeichnis stammverzeichnis_des_anwendungsservers/installableApps/ verfügbar. Implementieren sie die Anwendung "wimperdomain.ear" auf dem entsprechenden Zielserver für die Domäne. Sie müssen für die EJB eine JDNI-URL angeben.
    $AdminApp.install('stammverzeichnis_des_anwendungsservers/installableApps/wimperdomain.ear', 
    '[-appname wimperdomain -BindJndiForEJBNonMessageBinding [[ wim.ejb 
    WIMService wimejb.jar,META-INF/ejb-jar.xml ejbd2/com/ibm/websphere/wim/ejb/WIMServiceHome]] 
    -MapModulesToServers [[ wim.ejb wimejb.jar,META-INF/ejb-jar.xml 
    WebSphere:cell=myCell,node=myNode,server=server1 ]]]' )
  2. Erstellen Sie einen Benutzer namens vmmadmin in der Benutzerregistry, die der Sicherheitsdomäne domäne1 entspricht. Sie müssen als WebSphere Application Server-Administrator angemeldet sein.
    $AdminTask createUser {-uid vmmadmin –password tempPass -confirmPassword tempPass 
    –cn admincn –sn adminsn -securityDomainName domäne1 }
  3. Ordnen Sie die Virtual Member Manager-Rolle "IdMgrAdmin" dem Benutzer vmmadmin in der Benutzerregistry zu, die der Sicherheitsdomäne domäne1 entspricht.
    $AdminTask mapIdMgrUserToRole {-userId vmmadmin -roleName IdMgrAdmin -securityDomainName domäne1}

Mustercode

Fügen Sie den nachstehenden umfassenden Mustercode wie in den folgenden Schritten beschrieben zu Ihrer Anwendung hinzu. Ersetzen Sie hierbei die Variablen durch die tatsächlichen Werte, die Sie verwenden wollen.

  1. Greifen Sie mit der EJB-Suche auf die Virtual Member Manager-Instanz zu, die der Sicherheitsdomäne domäne1 entspricht. Die Angaben für EJB-JNDI sind mit den in Schritt 1 des Abschnitts "Voraussetzungen" verwendeten identisch.
  2. Erstellen Sie in domäne1 als Benutzer vmmadmin, dem in Schritt 3 des Abschnitts "Voraussetzungen" eine Virtual Member Manager-Rolle zugeordnet wurde, einen Benutzer.
    import commonj.sdo.DataObject;
    
    public class SimpleTest extends BaseApp
    {
        public static void createAsAdmin()
        {
            try {
                createUser("vmmadmin", "tempPass");
            }
            catch (Exception e) {
                e.printStackTrace();
            }
        } 
    
        public static void createUser(String user, String password) throws Exception
        {
            DataObject result = (DataObject) runAsUser(user, password, new java.security.PrivilegedExceptionAction()
            {
                public Object run() throws Exception
                {
                    //Note the service instance used is that of security domain obtained in step 1.
                    DataObject root = service.createRootDataObject();
                    DataObject user = root.createDataObject(DO_ENTITIES, WIM_NS_URI, DO_PERSON_ACCOUNT);
                    user.set("uid", "authzzuser");
                    user.set("cn", "authzzuser");
                    user.set("sn", "authzzuser");
                    user.set(PROP_PASSWORD, com.ibm.websphere.wim.util.PasswordUtil
                            .getByteArrayPassword("authzzuser"));
                    // Print Input datagraph
                    System.out.println("Input datagraph before creating user" + printDO(root));
                    DataObject retObject = service.create(root);
                    // Print the output datagraph
                    System.out.println("Output datagraph after creating user" + printDO(retObject));
                    return retObject;
                }
            });
        }
    
        public static void main(String[] args)
        {
            // Note that the EJB JNDI is same as one used in step 1.
            service = locateService("ejbd2/com/ibm/websphere/wim/ejb/WIMServiceHome");
            createAsAdmin();
            
        }
    }


Rechtliche Hinweise | Feedback