Fichiers UserRegistry.java
Le fichier suivant est une propriété personnalisée utilisée avec un registre d'utilisateurs personnalisé.
Pour obtenir plus d'informations, reportez-vous à la section Configuration des registres personnalisés autonomes.
// 5639-D57, 5630-A36, 5630-A37, 5724-D18 // (C) COPYRIGHT International Business Machines Corp. 1997, 2005 // All Rights Reserved * Eléments sous licence - Propriété d'IBM // // DESCRIPTION: // // Ce fichier est l'interface UserRegistry que les registres personnalisés dans WebSphere // Application Server implémentent pour activer la sécurité WebSphere pour utiliser le // le registre personnalisé. // package com.ibm.websphere.security; import java.util.*; import java.rmi.*; import java.security.cert.X509Certificate; import com.ibm.websphere.security.cred.WSCredential; /** * L'implémentation de cette interface permet à WebSphere Application Server Security * d'utiliser des registres personnalisés. Cette interface étend java.rmi.Remote car * le registre peut se trouver dans un processus éloigné. * * L'implémentation de cette interface doit fournir des implémentations pour : * * initialize(java.util.Properties) * checkPassword(String,String) * mapCertificate(X509Certificate[]) * getRealm * getUsers(String,int) * getUserDisplayName(String) * getUniqueUserId(String) * getUserSecurityName(String) * isValidUser(String) * getGroups(String,int) * getGroupDisplayName(String) * getUniqueGroupId(String) * getUniqueGroupIds(String) * getGroupSecurityName(String) * isValidGroup(String) * getGroupsForUser(String) * getUsersForGroup(String,int) * createCredential(String) **/ public interface UserRegistry extends java.rmi.Remote { /** * Initialise le registre. Cette méthode est appelée lors de la création * du registre. * * @param props : propriétés propres au registre avec lesquelles * le registre personnalisé doit être initialisé * @exception CustomRegistryException * S'il y a une erreur liée au registre * @exception RemoteException * lorsque cela étend java.rmi.Remote **/ public void initialize(java.util.Properties props) throws CustomRegistryException, RemoteException; /** * Vérifie le mot de passe de l'utilisateur. Cette méthode est appelée pour authentifier un * utilisateur lorsque le nom et le mot de passe sont indiqués. * * @param userSecurityName : nom de l'utilisateur * @param password : mot de passe de l'utilisateur * @return une valeur userSecurityName valide. En général, il s'agit * du nom du même utilisateur dont le mot de passe a été vérifié, mais * si l'implémentation doit renvoyer une autre valeur * userSecurityName dans le registre, elle peut le faire * @exception CheckPasswordFailedException si la combinaison userSecurityName/ * password n'existe pas dans le registre * @exception CustomRegistryException s'il y a une erreur liée * au registre * @exception RemoteException lorsque cela étend java.rmi.Remote **/ public String checkPassword(String userSecurityName, String password) throws PasswordCheckFailedException, CustomRegistryException, RemoteException; /** * Mappe un certificat (au format X509) avec un utilisateur valide du registre. * Permet de mapper le nom figurant dans le certificat fourni par un navigateur * avec la valeur userSecurityName du registre * * @param cert : chaîne de certificat X509 * @return nom mappé de l'utilisateur userSecurityName * @exception CertificateMapNotSupportedException : si ce certificat * particulier n'est pas supporté. * @exception CertificateMapFailedException : si le mappage du * certificat échoue. * @exception CustomRegistryException s'il y a une erreur liée * au registre * @exception RemoteException lorsque cela étend java.rmi.Remote **/ public String mapCertificate(X509Certificate[]cert) throws CertificateMapNotSupportedException, CertificateMapFailedException, CustomRegistryException, RemoteException; /** * Renvoie le domaine de sécurité du registre. * * @return le domaine. Le domaine est une chaîne propre au registre qui indique * le domaine auquel s'applique ce registre. * Par exemple, Par exemple, pour OS400 ou AIX, il s'agit du * nom d'hôte du système dont le registre utilisateur est représenté * par cet objet. * Si une valeur indéfinie est renvoyée par cette méthode, le domaine prend * par défaut la valeur "customRealm". Utilisez de préférence * la valeur que vous avez définie pour le domaine. * @exception CustomRegistryException s'il y a une erreur liée * au registre * @exception RemoteException lorsque cela étend java.rmi.Remote **/ public String getRealm() throws CustomRegistryException, RemoteException; /** * Renvoie une liste d'utilisateurs qui correspond à une valeur pattern du registre. * Le nombre maximal d'utilisateurs renvoyés est défini par * l'argument. * Cette méthode est appelée par la console d'administration) et par les scripts * (ligne de commande) pour rendre les utilisateurs du registre accessibles et les * ajouter aux rôles. * * @parameter pattern : chaîne de recherche. (Par ex., a* permet de sélectionner les * userSecurityNames commençant par la lettre a) * @parameter limit : nombre maximal d'utilisateurs qui peuvent être renvoyés. * Cette fonction est très utile lorsque le registre contient des milliers * d'utilisateurs et qu'il n'est pas pratique de les extraire tous en * même temps. La valeur O renvoie tous les utilisateurs et * doit donc être utilisée avec précaution. * @return un objet Result qui contient la liste des utilisateurs * demandée et un indicateur qui montre s'il existe davantage d'utilisateurs. * @exception CustomRegistryException s'il y a une erreur liée * au registre * @exception RemoteException lorsque cela étend java.rmi.Remote **/ public Result getUsers(String pattern, int limit) throws CustomRegistryException, RemoteException; /** * Renvoie le nom affiché de l'utilisateur spécifié par userSecurityName. * * Cette méthode est appelée uniquement lorsque les informations utilisateur s'affichent * (par exemple dans la console d'administration) et donc qu'elles ne sont pas * utilisées pour l'authentification ou les droits d'accès effectifs. Si le registre * ne contient aucun nom affiché, une chaîne nulle ou vide est renvoyée. * * Dans le registre personnalisé de WebSphere Application Server Version 4.0, si vous aviez un * nom d'affichage pour l'utilisateur et qu'il était différent du nom de sécurité, le nom d'affichage * était renvoyé pour les méthodes d'EJB getCallerPrincipal() et les méthodes de servlet * getRemoteUser(). * Dans WebSphere Application Server Version 6.0 pour les mêmes méthodes de sécurité, * le nom de sécurité est renvoyé par défaut. Ce procédé est conseillé car le nom affiché * n'est pas unique et peut engendrer des défauts de sécurité. * * Pour plus d'informations, reportez-vous à la documentation. * * @parameter userSecurityName : nom de l'utilisateur. * @return nom affiché de l'utilisateur. Le nom affiché est une * chaîne propre au registre qui représente un nom descriptif, pas * nécessairement unique, de l'utilisateur. S'il n'existe aucun * nom affiché, une chaîne nulle ou vide est renvoyée. * @exception EntryNotFoundException : si userSecurityName n'existe pas. * @exception CustomRegistryException s'il y a une erreur liée * au registre * @exception RemoteException lorsque cela étend java.rmi.Remote **/ public String getUserDisplayName(String userSecurityName) throws EntryNotFoundException, CustomRegistryException, RemoteException; /** * Renvoie l'ID unique associé à un userSecurityName. Cette méthode est appelée pour * créer l'identificateur unique d'un utilisateur. * * @parameter userSecurityName : nom de l'utilisateur. * @return : ID unique de l'utilisateur. Il se présente sous forme * de chaîne de données uniques propres au registre et servant à * représenter l'utilisateur. Par exemple, pour UNIX * UNIX, l'ID unique d'un utilisateur peut être son UID. * @exception EntryNotFoundException : si userSecurityName n'existe pas. * @exception CustomRegistryException s'il y a une erreur liée * au registre * @exception RemoteException lorsque cela étend java.rmi.Remote **/ public String getUniqueUserId(String userSecurityName) throws EntryNotFoundException, CustomRegistryException, RemoteException; /** * Renvoie le nom d'un utilisateur à partir de son ID unique. * * @parameter uniqueUserId : ID unique de l'utilisateur. * @return : nom userSecurityName de l'utilisateur. * @exception EntryNotFoundException : si uniqueUserID n'existe pas. * @exception CustomRegistryException s'il y a une erreur liée * au registre * @exception RemoteException lorsque cela étend java.rmi.Remote **/ public String getUserSecurityName(String uniqueUserId) throws EntryNotFoundException, CustomRegistryException, RemoteException; /** * Détermine si le nom userSecurityName existe dans le registre * * @parameter userSecurityName : nom de l'utilisateur * @return : true si l'utilisateur est valide. Sinon, false * @exception CustomRegistryException s'il y a une erreur liée * au registre * @exception RemoteException lorsque cela étend java.rmi.Remote **/ public boolean isValidUser(String userSecurityName) throws CustomRegistryException, RemoteException; /** * Renvoie une liste de groupes qui correspond à une valeur pattern du registre. * Le nombre maximal de groupes renvoyés est défini par * l'argument. * Cette méthode est appelée par la console d'administration et les scripts * (ligne de commande) pour rendre les groupes du registre accessibles et * les ajouter aux rôles. * * @parameter pattern : chaîne de recherche. (Par ex., a* permet de sélectionner les * groupSecurityNames commençant par la lettre a) * @parameter limit : nombre maximal de groupes à renvoyer. * Cette fonction est très utile lorsque le registre contient des milliers * de groupes et qu'il n'est pas pratique de les obtenir tous en * même temps. La valeur O renvoie tous les utilisateurs et * doit donc être utilisée avec précaution. * @return un objet Result qui contient la liste des groupes * demandée et un indicateur montrant s'il existe davantage de groupes. * @exception CustomRegistryException s'il y a une erreur liée * au registre * @exception RemoteException lorsque cela étend java.rmi.Remote **/ public Result getGroups(String pattern, int limit) throws CustomRegistryException, RemoteException; /** * Renvoie le nom affiché du groupe spécifié par groupSecurityName. * * Cette méthode peut être appelée uniquement lorsque les informations utilisateur sont affichées * (par exemple dans la console d'administration) et qu'elles ne sont pas * utilisées pour l'authentification ou les droits d'accès. Si le registre ne contient * aucun nom affiché, une chaîne null ou vide est renvoyée. * * @parameter groupSecurityName : nom du groupe. * @return nom affiché du groupe. Le nom affiché est une * chaîne propre au registre qui représente un nom descriptif, pas * nécessairement unique, du groupe. S'il n'existe aucun * nom affiché, une chaîne nulle ou vide est renvoyée. * @exception EntryNotFoundException : si groupSecurityName n'existe pas. * @exception CustomRegistryException s'il y a une erreur liée * au registre * @exception RemoteException lorsque cela étend java.rmi.Remote **/ public String getGroupDisplayName(String groupSecurityName) throws EntryNotFoundException, CustomRegistryException, RemoteException; /** * Renvoie l'ID unique d'un groupe. * @parameter groupSecurityName : nom du groupe. * @return : ID unique du groupe. Il se présente * sous forme de chaîne de données uniques propres au registre * et servant à représenter le groupe. * Par exemple, pour le registre d'utilisateurs UNIX, l'ID unique peut être * le GID. * @exception EntryNotFoundException : si groupSecurityName n'existe pas. * @exception CustomRegistryException s'il y a une erreur liée * au registre * @exception RemoteException lorsque cela étend java.rmi.Remote **/ public String getUniqueGroupId(String groupSecurityName) throws EntryNotFoundException, CustomRegistryException, RemoteException; /** * Renvoie les ID uniques de tous les groupes qui contiennent l'ID unique d'un * utilisateur. Cette méthode est appelée lors de la création de l'identificateur * unique d'un utilisateur. * * @parameter uniqueUserId : ID unique de l'utilisateur. * @return : liste de tous les ID uniques de groupe à laquelle appartient * l'utilisateur. L'ID unique d'une entrée est la représentation * sous forme de chaîne de données uniques propres au registre et servant * à représenter l'entrée. Par exemple, pour le registre d'utilisateurs * UNIX, l'ID unique d'un groupe peut être le GID * et l'ID unique pour l'utilisateur peut être l'UID. * @exception EntryNotFoundException si l'ID unique d'utilisateur n'existe pas. * @exception CustomRegistryException s'il y a une erreur liée * au registre * @exception RemoteException lorsque cela étend java.rmi.Remote **/ public List getUniqueGroupIds(String uniqueUserId) throws EntryNotFoundException, CustomRegistryException, RemoteException; /** * Renvoie le nom d'un groupe à partir de son ID unique. * * @parameter uniqueGroupId : ID unique du groupe. * @return : nom du groupe. * @exception EntryNotFoundException : si uniqueGroupId n'existe pas. * @exception CustomRegistryException s'il y a une erreur liée * au registre * @exception RemoteException lorsque cela étend java.rmi.Remote **/ public String getGroupSecurityName(String uniqueGroupId) throws EntryNotFoundException, CustomRegistryException, RemoteException; /** * Détermine si le groupSecurityName existe dans le registre * * @parameter groupSecurityName : nom du groupe * @return true si le groupe existe, sinon false * @exception CustomRegistryException s'il y a une erreur liée * au registre * @exception RemoteException lorsque cela étend java.rmi.Remote **/ public boolean isValidGroup(String groupSecurityName) throws CustomRegistryException, RemoteException; /** * Renvoie les noms de sécurité de tous les groupes contenant l'utilisateur * * Cette méthode est appelée par la console d'administration et les scripts * (ligne de commande) pour vérifier si l'utilisateur entré pour le mappage * appartient à ce rôle parmi ceux adéquats. A l'origine, la vérification a * lieu pour voir si le rôle contient l'utilisateur. Si tel n'est pas explicitement le cas, * cette méthode est appelée pour extraire les groupes auxquels cet utilisateur * appartient afin d'effectuer des vérifications pour les groupes inclus dans le rôle. * * @parameter userSecurityName : nom de l'utilisateur * @return liste de tous les securityNames de groupe à laquelle l'utilisateur * l'utilisateur. * @exception EntryNotFoundException si l'utilisateur n'existe pas. * @exception CustomRegistryException s'il y a une erreur liée * au registre * @exception RemoteException lorsque cela étend java.rmi.Remote **/ public List getGroupsForUser(String userSecurityName) throws EntryNotFoundException, CustomRegistryException, RemoteException; /** * Renvoie la liste d'utilisateurs d'un groupe. * * Le nombre maximal d'utilisateurs renvoyés est défini par * l'argument. * * Cette méthode est utilisée par WebSphere Business Integration * Server Foundation Process Choreographer lorsque les attributions d'équipe * sont définies à l'aide de groupes. * * Dans de très rares cas, si vous utilisez un registre d'utilisateurs et qu'il * n'est pas facile d'extraire tous les utilisateurs de l'un de vos groupes (par exemple, si * le nombre d'utilisateurs est important), vous pouvez créer l'exception NotImplementedException * pour ces groupes. Vérifiez que si WebSphere Business * Integration Server Foundation Process Choreographer est installé (ou en cas * d'installation ultérieure), les utilisateurs ne sont pas définis à l'aide de ces groupes. * S'il n'est pas nécessaire que les attributions d'équipe renvoient des utilisateurs * à partir de groupes du registre, il est recommandé que cette méthode * soit appliquée sans émettre d'exception NotImplemented. * * @parameter groupSecurityName : nom du groupe * @parameter limit : nombre maximal d'utilisateurs à renvoyer. * Cette fonction est très utile lorsque le registre * contient un grand nombre et qu'il n'est pas pratique * de les extraire tous en même temps. La valeur O renvoie tous les * utilisateurs et doit donc être utilisée avec précaution. * @return un objet Result qui contient la liste des utilisateurs * demandée et un indicateur qui montre s'il existe davantage d'utilisateurs. * @deprecated : cette méthode sera déconseillée par la suite. * @exception NotImplementedException crée cette exception dans de rares cas * lorsqu'il n'est pas facile d'extraire ces informations pour un des * groupes à partir du registre. * @exception EntryNotFoundException : si le groupe n'existe pas dans * le registre * @exception CustomRegistryException s'il y a une erreur liée * au registre * @exception RemoteException lorsque cela étend l'interface java.rmi.Remote **/ public Result getUsersForGroup(String groupSecurityName, int limit) throws NotImplementedException, EntryNotFoundException, CustomRegistryException, RemoteException; /** * Cette méthode est implémentée en interne par WebSphere Application Server * Server de cette version. Elle n'est pas appelée pour les implémentations du * registre personnalisé de cette version. Renvoyez null dans l'implémentation. * * Cette méthode n'étant pas appelée, il est également possible de renvoyer * l'exception NotImplementedException, comme indiqué dans la documentation précédente. * **/ public com.ibm.websphere.security.cred.WSCredential createCredential(String userSecurityName) throws NotImplementedException, EntryNotFoundException, CustomRegistryException, RemoteException; }