< Précédent | Suivant >

Leçon 4.2 : Activation des autorisations basées sur l'utilisateur

Dans le module d'authentification de ce tutoriel, vous avez créé deux utilisateurs : operator1 et admin1. Vous pouvez affecter des droits différents à ces utilisateurs avec l'autorisation JASS (Java Authentication and Authorization Service).

Définition de la règle d'autorisation JAAS (Java Authentication and Authorization Service) en utilisant des principaux d'utilisateur

Vous pouvez affecter des autorisations aux utilisateurs que vous avez créés. Affectez les autorisations de lecture operator1 uniquement à toutes les mappes. Affectez à l'utilisateur admin1 toutes les autorisations. Utilisez le fichier de règle d'autorisation JAAS pour accorder des autorisations aux principaux.
Editez le fichier d'autorisation JAAS. Le fichier xsAuth2.policy se trouve dans le répertoire samples_home/security :
grant codebase http://www.ibm.com/com/ibm/ws/objectgrid/security/PrivilegedAction
Principal com.ibm.ws.security.common.auth.WSPrincipalImpl "defaultWIMFileBasedRealm/operator1" {
    permission com.ibm.websphere.objectgrid.security.MapPermission "Grid.Map1", "read";
};

grant codebase http://www.ibm.com/com/ibm/ws/objectgrid/security/PrivilegedAction
Principal com.ibm.ws.security.common.auth.WSPrincipalImpl "defaultWIMFileBasedRealm/admin1" {
    permission com.ibm.websphere.objectgrid.security.MapPermission "Grid.Map1", "all";
};
Dans ce fichier, le codebase http://www.ibm.com/com/ibm/ws/objectgrid/security/PrivilegedAction est une URL réservée à ObjectGrid. Toutes les autorisations ObjectGrid accordées aux principaux doivent utiliser ce codebase spécial. Les autorisations suivantes sont affectées dans ce fichier :
  • Le première instruction accorde l'autorisation de mappe read au principal operator1. L'utilisateur operator1 dispose uniquement de l'autorisation de lecture sur la mappe Map1 dans l'instance Grid ObjectGrid.
  • La deuxième instruction accorde toutes les autorisations de mappe au principal admin1. L'utilisateur admin1 dispose de toutes les autorisations sur la mappe Map1 dans l'instance Grid ObjectGrid.
  • Le principal s'appelle defaultWIMFileBasedRealm/operator1 et non pas Operator1. WebSphere Application Server ajoute automatiquement le nom de domaine au nom du principal lorsque des référentiels fédérés sont utilisés comme registre de comptes utilisateur. Modifiez cette valeur si nécessaire.

Définition du fichier de règle d'autorisation JAAS à l'aide des propriétés JVM

Procédez comme suit pour définir les propriétés JVM des serveurs xs1 et xs2qui qui se trouvent dans le cluster xsCluster. Si vous utilisez une topologie qui est différente de l'exemple de topologie qui est utilisé dans ce tutoriel, définissez le fichier sur tous vos serveurs de conteneur.
  1. Dans la console d'administration, cliquez sur Serveurs > Serveurs d'applications > server_name > Java et gestion des processus > Définition de processus > Java Virtual Machine.
  2. Ajoutez les arguments JVM génériques suivants :
    -Djava.security.auth.policy=samples_home/security/xsAuth2.policy
  3. Cliquez sur OK et enregistrez les modifications.

Exécution de l'exemple d'application pour tester les autorisations

Vous pouvez utiliser l'exemple d'application pour tester les paramètres d'autorisation. L'administrateur continue d'avoir tous les autorisations dans dans la mappe Map1, y compris l'affichage et l'ajout d'employés. L'opérateur doit pouvoir afficher uniquement les employés, car seule l'autorisation Lecture lui a été affectée.
  1. Redémarrez tous les serveurs d'applications qui exécutent des serveurs de conteneur.
  2. Ouvrez l'application EmployeeManagementWeb. Dans un navigateur Web, ouvrez http://<host>:<port>/EmployeeManagermentWeb/management.jsp.
  3. Connectez-vous à l'application en tant qu'administrateur. Utilisez le nom d'utilisateur admin1 et le mot de passe admin1.
  4. Essayez d'afficher un employé. Cliquez sur Afficher un employé et recherchez l'adresse électronique authemp1@acme.com. Un message indique que l'utilisateur est introuvable.
  5. Ajoutez un employé. Cliquez sur Ajouter un employé. Ajoutez l'adresse électronique authemp1@acme.com, le prénom Joe et le nom Doe. Cliquez sur Soumettre. Un message indique que l'employé a été ajouté.
  6. Connectez-vous en tant qu'opérateur. Ouvrez une seconde fenêtre de navigateur Web et http://<host>:<port>/EmployeeManagermentWeb/management.jsp. Utilisez le nom d'utilisateur operator1 et le mot de passe operator1.
  7. Essayez d'afficher un employé. Cliquez sur Afficher un employé et recherchez l'adresse électronique authemp1@acme.com. L'employé est affiché.
  8. Ajoutez un employé. Cliquez sur Ajouter un employé. Ajoutez l'adresse électronique authemp2@acme.com, le prénom Joe et le nom Doe. Cliquez sur Soumettre. Le message suivant s'affiche :
    An exception occurs when Add the employee. See below for detailed exception messages.
    L'exception suivante se trouve dans la chaîne d'exception :
    java.security.AccessControlException: Access denied 
    (com.ibm.websphere.objectgrid.security.MapPermission Grid.Map1 insert)
    Ce message s'affiche, car l'utilisateur operator1 n'est pas autorisé à insérer des données dans la mappe Map1.
Si vous utilisez une version WebSphere Application Server antérieure à la version 7.0.0.11, une erreur java.lang.StackOverflowError peut s'afficher sur le serveur de conteneur. Elle est provoquée par l'IBM Developer Kit. Le problème est résolu dans l'IBM Developer Kit fourni avec WebSphere Application Server Version 7.0.0.11 et les versions suivantes.

Point de contrôle de la leçon

Dans cette leçon, vous avez configuré l'autorisation en attribuant des autorisations à des utilisateurs spécifiques.

< Précédent | Suivant >