Exemple de code pour l'utilisation des droits de gestion des référentiels fédérés

Les étapes de bout en bout, les commandes et les exemples de fragments de code nécessaires pour permettre aux utilisateurs qui ne sont pas administrateurs WebSphere Application Server d'accéder aux interfaces de programmation d'application (API) de virtual member manager dans un environnement à plusieurs domaines de sécurité sont fournis ici.

Les droits de gestion des référentiels fédérés permettent aux utilisateurs autres que les administrateurs WebSphere Application Server de gérer les utilisateurs et les groupes et d'accéder à d'autres API virtual member manager dans les domaines d'administration et d'application. Pour plus d'informations sur les rôles prédéfinis et leurs droits, reportez-vous à la rubrique Assurance d'une sécurité, dans la documentation de virtual member manager. Vous pouvez utiliser les commandes wsadmin suivantes pour implémenter cette fonction : mapIdMgrUserToRole, mapIdMgrGroupToRole, removeIdMgrUsersFromRole, removeIdMgrGroupsFromRole et listIdMgrUsersForRoles. Pour plus d'informations, reportez-vous à l'utilisation de ces commandes dans la rubrique Groupe de commandes IdMgrConfig pour l'objet AdminTask du centre de documentation de WebSphere Application Server.

Les étapes suivantes sont abordées dans cet exemple de scénario :

  1. Installez l'application wimperdomain sur le serveur dont la portée correspond au domaine de sécurité. Dans un environnement à plusieurs domaines de sécurité, vous devez déployer l'EJB de virtual member manager sur chaque serveur cible, où la portée du serveur est associé à ce domaine de sécurité, afin d'obtenir une référence à l'instance de virtual member manager dans ce domaine. Cette procédure permet d'appeler les API de virtual member manager via l'EJB pour un domaine spécifique. Seuls les utilisateurs possédant les rôles d'accès requis pour les API de virtual member manager ou les superutilisateurs dans ce domaine peuvent appeler les API correspondantes.
  2. Créez un utilisateur dans le registre d'utilisateurs qui correspond au domaine de sécurité. Vous devez être connecté en tant qu'administrateur WebSphere Application Server.
  3. Affectez l'utilisateur à un rôle virtual member manager. Les rôles prédéfinis valides de virtual member manager sont IdMgrAdmin, IdMgrWriter et IdMgrReader.
  4. Accédez à l'instance de virtual member manager qui correspond au domaine de sécurité avec la recherche EJB. Dans un environnement de déploiement réseau, l'EJB sur le noeud du serveur géré doit d'abord être recherché avec le chemin absolu du contexte (par exemple, cell/nodes/myNode/servers/server1/ejbna, ejbna correspondant au nom JNDI de l'EJB de virtual member manager sur le serveur géré, server1).
  5. Effectuez une opération sur l'instance virtual member manager qui correspond au domaine de sécurité en tant qu'utilisateur possédant un rôle virtual member manager.

Conditions prérequises

Assurez-vous d'avoir bien lu les informations et effectué les étapes décrites dans la rubrique Prérequis pour la programmation.

Vous devez effectuer les étapes de configuration ci-après avant d'utiliser l'exemple de code. Démarrez l'outil wsadmin et exécutez les commandes ci-après. Remplacez les variables par les valeurs actuelles à utiliser.

  1. Installez l'application wimperdomain sur le serveur dont la portée correspond au domaine de sécurité. L'application wimperdomain.ear est disponible sous le répertoire racine_serveur_app/installableApps/. Déployez l'application wimperdomain.ear sur le serveur cible spécifique du domaine. Vous devez indiquer une URL JNDI unique pour l'EJB.
    $AdminApp.install('racine_serveur_app/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. Créez un utilisateur vmmadmin dans le registre d'utilisateurs qui correspond au domaine de sécurité domain1. Vous devez être connecté en tant qu'administrateur WebSphere Application Server.
    $AdminTask createUser {-uid vmmadmin –password tempPass -confirmPassword tempPass 
    –cn admincn –sn adminsn -securityDomainName domain1 }
  3. Affectez le rôle IdMgrAdmin de virtual member manager à l'utilisateur vmmadmin du registre d'utilisateurs qui correspond au domaine de sécurité domain1.
    $AdminTask mapIdMgrUserToRole {-userId vmmadmin -roleName IdMgrAdmin -securityDomainName domain1}

Exemple de code

Ajoutez l'exemple de code de bout en bout ci-après à votre code d'application, comme indiqué dans les étapes ci-après. Remplacez les variables par les valeurs actuelles à utiliser.

  1. Accédez à l'instance de virtual member manager qui correspond au domaine de sécurité domain1 avec la recherche EJB. Le JNDI EJB correspond à celui utilisé précédemment à l'étape 1 de la section Configuration requise.
  2. Créez un utilisateur dans domain1 comme utilisateur vmmadmin auquel un rôle virtual member manager est affecté à l'étape 3 de la section Configuration requise.
    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
                {
                    //Notez que l'instance de service utilisée est celle du domaine de sécurité obtenu à l'étape 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"));
                    // Impression du graphique de données d'entrée
                    System.out.println("Input datagraph before creating user" + printDO(root));
                    DataObject retObject = service.create(root);
                    // Impression du graphique de données de sortie
                    System.out.println("Output datagraph after creating user" + printDO(retObject));
                    return retObject;
                }
            });
        }
    
        public static void main(String[] args)
        {
            // Notez que le JNDI EJB correspond à celui utilisé à l'étape 1.
            service = locateService("ejbd2/com/ibm/websphere/wim/ejb/WIMServiceHome");
            createAsAdmin();
            
        }
    }


Conditions d'utilisation | Commentaires