Archivos UserRegistry.java
El siguiente archivo es una propiedad personalizada que se utiliza con un registro de usuarios personalizado.
Para obtener más información, consulte Configuración de registros personalizados autónomos.
// 5639-D57, 5630-A36, 5630-A37, 5724-D18 // (C) COPYRIGHT International Business Machines Corp. 1997, 2005 // Todos los derechos reservados * Material bajo licencia - Propiedad de IBM // // DESCRIPCIÓN: // // Este archivo es la interfaz UserRegistry que implementan los registros personalizados // de WebSphere Application Server para permitir que la seguridad de WebSphere utilice el // personalizado. // package com.ibm.websphere.security; import java.util.*; import java.rmi.*; import java.security.cert.X509Certificate; import com.ibm.websphere.security.cred.WSCredential; /** * Al implementar esta interfaz, se permite que la seguridad de WebSphere Application Server * utilizar los registros personalizados. Esta interfaz amplía java.rmi.Remote, ya que * el registro puede estar en un proceso remoto. * *La implementación de esta interfaz debe proporcionar implementaciones para: * * 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 { /** * Inicializa el registro. Se llama a este método cuando se crea el * registro. * * @param props las propiedades específicas del registro con las * que inicializar el registro personalizado * @exception CustomRegistryException * si hay algún problema específico del registro * @exception RemoteException * ya que amplía java.rmi.Remote **/ public void initialize(java.util.Properties props) throws CustomRegistryException, RemoteException; /** * Comprueba la contraseña del usuario. Se llama a este método para autenticar a un * usuario cuando se proporciona el nombre y la contraseña del usuario. * * @param userSecurityName el nombre del usuario * @param password la contraseña del usuario * @return un userSecurityName válido. Normalmente es el * nombre del mismo usuario cuya contraseña se ha comprobado pero * si la implementación desea devolver otro * userSecurityName válido del registro, puede hacerlo * @exception CheckPasswordFailedException si la combinación de userSecurityName/ * password no existe en el registro * @exception CustomRegistryException si hay algún problema específico * del registro * @exception RemoteException as this extends java.rmi.Remote **/ public String checkPassword(String userSecurityName, String password) throws PasswordCheckFailedException, CustomRegistryException, RemoteException; /** * Correlaciona un certificado (formato X509) con un usuario válido del registro. * Se utiliza para correlacionar el nombre del certificado que proporciona el navegador * con un userSecurityName válido del registro * * @param cert la cadena de certificados X509 * @return el nombre correlacionado del userSecurityName del usuario * @exception CertificateMapNotSupportedException si no se da soporte * al certificado concreto. * @exception CertificateMapFailedException si la correlación del * certificado no se ejecuta correctamente. * @exception CustomRegistryException si hay algún problema específico * del registro * @exception RemoteException as this extends java.rmi.Remote **/ public String mapCertificate(X509Certificate[] cert) throws CertificateMapNotSupportedException, CertificateMapFailedException, CustomRegistryException, RemoteException; /** * Devuelve el reino del registro. * * @return the realm. El reino es una serie específica del registro que indica * el realm (reino) o domain (dominio) al que se aplica * el registro. Por ejemplo, para OS400 o AIX, sería el nombre del * host a cuyo registro de usuarios representa este * objeto. * Si este método devuelve null, el reino por omisión será * "customRealm". Se recomienda utilizar * su propio valor de reino. * @exception CustomRegistryException si hay algún problema específico * del registro * @exception RemoteException as this extends java.rmi.Remote **/ public String getRealm() throws CustomRegistryException, RemoteException; /** * Obtiene una lista de los usuarios que coinciden con un pattern del registro. * El número máximo de usuarios devueltos se define mediante el argumento limit. * * Este método se llama mediante la consola administrativa y los scripts (línea de * mandatos) para poder añadir los usuarios del registro a los * roles. * * @parameter pattern el patrón con el que se ha de hacer coincidir. (Por ejemplo, a* coincidirá con todos los * userSecurityNames que comiencen por a) * @parameter limit el número máximo de usuarios que se ha de devolver. * Resulta muy útil en situaciones en las que hay miles de usuarios * en el registro y obtenerlos todos a la vez no es nada * práctico. El valor 0 significa que se han de obtener todos los * usuarios y debe utilizarse con atención. * @return un objeto Result que contiene la lista de usuarios * solicitados y un distintivo para indicar si hay más usuarios * @exception CustomRegistryException si hay algún problema específico * del registro * @exception RemoteException as this extends java.rmi.Remote **/ public Result getUsers(String pattern, int limit) throws CustomRegistryException, RemoteException; /** * Devuelve el nombre del usuario especificado mediante userSecurityName. * * Este método sólo se llama cuando se visualiza la información del usuario, * es decir, para fines informativos, por ejemplo, en la consola administrativa, y no se * usa para fines de autenticación o autorización reales. Si no hay nombres de * visualización en el registro se devuelve null o una serie vacía. * * En el registro personalizado de WebSphere Application Server Versión 4.0, si había un * del usuario y era distinto del nombre de seguridad, el nombre de visualización se devolvía * para los métodos EJB getCallerPrincipal() y los métodos del servlet * de servlet getUserPrincipal() y getRemoteUser(). * En WebSphere Application Server versión 6.0, para los mismos métodos la seguridad * se devuelve por omisión. Este el método recomendado ya que el nombre de visualización no * es exclusivo y puede crear problemas de seguridad. * * Consulte la documentación para obtener más información. * * @parameter userSecurityName el nombre del usuario. * @return el nombre de visualización del usuario. El nombre de visualización * es una serie específica del registro que representa un nombre descriptivo * del usuario, que no siempre es exclusivo. Si no existe un nombre de visualización * se devuelve null o una serie vacía. * @exception EntryNotFoundException si userSecurityName no existe. * @exception CustomRegistryException si hay algún problema específico * del registro * @exception RemoteException as this extends java.rmi.Remote **/ public String getUserDisplayName(String userSecurityName) throws EntryNotFoundException, CustomRegistryException, RemoteException; /** * Devuelve el ID exclusivo de un userSecurityName. Se llama a este método cuando se crea el * credencial de un usuario. * * @parameter userSecurityName el nombre del usuario. * @return el ID exclusivo del usuario. El ID exclusivo de un usuario son datos * exclusivos, específicos del registro y con formato de serie * que representan al usuario. Por ejemplo, para el registro de * el ID exclusivo de un usuario puede ser el UID. * @exception EntryNotFoundException si userSecurityName no existe. * @exception CustomRegistryException si hay algún problema específico * del registro * @exception RemoteException as this extends java.rmi.Remote **/ public String getUniqueUserId(String userSecurityName) throws EntryNotFoundException, CustomRegistryException, RemoteException; /** * Devuelve el nombre de un usuario a partir de su ID exclusivo. * * @parameter uniqueUserId el ID exclusivo del usuario. * @return el userSecurityName del usuario. * @exception EntryNotFoundException si el uniqueUserID no existe. * @exception CustomRegistryException si hay algún problema específico * del registro * @exception RemoteException as this extends java.rmi.Remote **/ public String getUserSecurityName(String uniqueUserId) throws EntryNotFoundException, CustomRegistryException, RemoteException; /** * Determina si userSecurityName existe en el registro * * @parameter userSecurityName el nombre del usuario * @return true si el usuario es válido, de lo contrario, false. * @exception CustomRegistryException si hay algún problema específico * del registro * @exception RemoteException as this extends java.rmi.Remote **/ public boolean isValidUser(String userSecurityName) throws CustomRegistryException, RemoteException; /** * Obtiene una lista de los usuarios que coinciden con un pattern del registro. * El número máximo de usuarios devueltos se define mediante el argumento limit. * * La consola administrativa y los scripts (línea de mandatos) llaman a * este método para poder añadir los grupos del registro a * los roles. * * @parameter pattern el patrón con el que se ha de hacer coincidir. (Por ejemplo, a* coincidirá con todos los * groupSecurityNames que comiencen por a) * @parameter limita el número máximo de grupos que se devuelven. * Resulta muy útil en situaciones en las que hay miles de usuarios * en el registro y obtenerlos todos a la vez no es nada * práctico. El valor 0 significa que se han de obtener todos los * usuarios y debe utilizarse con atención. * @return un objeto Result que contiene la lista de grupos * solicitados y un distintivo para indicar si hay más grupos. * @exception CustomRegistryException si hay algún problema específico * del registro * @exception RemoteException as this extends java.rmi.Remote **/ public Result getGroups(String pattern, int limit) throws CustomRegistryException, RemoteException; /** * Devuelve el nombre del grupo especificado mediante groupSecurityName. * * Este método sólo se llama cuando se visualiza la información del grupo, * (por ejemplo, en la consola administrativa) y no se utiliza en la autenticación * real o para fines de autorización. Si no hay nombres de visualización * en el registro se devuelve null o una serie vacía. * * @parameter groupSecurityName el nombre del grupo. * @return el nombre de visualización del grupo. El nombre de visualización * es una serie específica del registro que representa un nombre descriptivo * de un grupo que no siempre es exclusivo. Si no existe un nombre de visualización * se devuelve null o una serie vacía. * @exception EntryNotFoundException si groupSecurityName no existe. * @exception CustomRegistryException si hay algún problema específico * del registro * @exception RemoteException as this extends java.rmi.Remote **/ public String getGroupDisplayName(String groupSecurityName) throws EntryNotFoundException, CustomRegistryException, RemoteException; /** * Devuelve el ID exclusivo de un grupo. * @parameter groupSecurityName el nombre del grupo. * @return el ID exclusivo del grupo. El ID exclusivo del * grupo son los datos exclusivos y específicos del registro, * en formato de serie que representan al grupo. * Por ejemplo, en el registro de usuarios de UNIX, el ID exclusivo puede * ser el GID. * @exception EntryNotFoundException si groupSecurityName no existe. * @exception CustomRegistryException si hay algún problema específico * del registro * @exception RemoteException as this extends java.rmi.Remote **/ public String getUniqueGroupId(String groupSecurityName) throws EntryNotFoundException, CustomRegistryException, RemoteException; /** * Devuelve los ID exclusivos de todos los grupos que contienen el ID exclusivo de * un usuario. Se llama cuando se crean las credenciales de un usuario. * * @parameter uniqueUserId el ID exclusivo del usuario. * @return una lista de todos los ID exclusivos del grupo a los que pertenece el ID de usuario * El ID exclusivo de una entrada son los datos exclusivos y específicos del * registro, con formato de serie que sirven para * representar la entrada. Por ejemplo, para el registro de * usuarios de UNIX, el ID exclusivo de un grupo puede ser el GID * y el ID exclusivo del usuario puede ser el UID. * @exception EntryNotFoundException si no existe el ID de usuario exclusivo. * @exception CustomRegistryException si hay algún problema específico * del registro * @exception RemoteException as this extends java.rmi.Remote **/ public List getUniqueGroupIds(String uniqueUserId) throws EntryNotFoundException, CustomRegistryException, RemoteException; /** * Devuelve el nombre de un grupo a partir de su ID exclusivo. * * @parameter uniqueGroupId el ID exclusivo del grupo. * @return el nombre del grupo. * @exception EntryNotFoundException si uniqueGroupId no existe. * @exception CustomRegistryException si hay algún problema específico * del registro * @exception RemoteException as this extends java.rmi.Remote **/ public String getGroupSecurityName(String uniqueGroupId) throws EntryNotFoundException, CustomRegistryException, RemoteException; /** * Determina si groupSecurityName existe en el registro * * @parameter groupSecurityName el nombre del grupo * @return true si el grupo existe, de lo contrario, false * @exception CustomRegistryException si hay algún problema específico * del registro * @exception RemoteException as this extends java.rmi.Remote **/ public boolean isValidGroup(String groupSecurityName) throws CustomRegistryException, RemoteException; /** * Devuelve los securityNames de todos los grupos que contienen al usuario * * La consola administrativa y los scripts (línea de mandatos) llaman a este * método para verificar si el usuario especificado para la correlación de RunAsRole * pertenece a dicho rol en la correlación de roles con usuarios. Inicialmente, la comprobación se * se realiza para ver si el rol contiene al usuario. Si el rol no contiene explícitamente al usuario * se llama a este método para obtener los grupos a los que pertenece * este usuario y así realizar comprobaciones en los grupos que contiene el rol. * * @parameter userSecurityName el nombre del usuario * @return una lista de todos los securityNames del grupo al que pertenece el usuario. * * @exception EntryNotFoundException si el usuario no existe. * @exception CustomRegistryException si hay algún problema específico * del registro * @exception RemoteException as this extends java.rmi.Remote **/ public List getGroupsForUser(String userSecurityName) throws EntryNotFoundException, CustomRegistryException, RemoteException; /** * Obtiene una lista de los usuarios de un grupo. * * El número máximo de usuarios devueltos se define mediante el argumento limit. * * * Este método lo utiliza WebSphere Business Integration * Server Foundation Process Choreographer cuando las asignaciones de personal * se modelan utilizando grupos. * * En raras ocasiones, si está trabajando con un registro donde obtener todos * los usuarios de cualquiera de los grupos no es práctico, por ejemplo, si hay * muchos usuarios, puede generar una excepción NotImplementedException * para esos grupos particulares. Asegúrese de que, si WebSphere Business * Integration Server Foundation Process Choreographer está instalado (o * se instala más tarde), no se modelen utilizando estos grupos en concreto. * Si no importa que las asignaciones de personal devuelvan los usuarios de * grupos del registro, se recomienda implementar este método * sin emitir la excepción NotImplemented. * * @parameter groupSecurityName que representa el nombre del grupo * @parameter limita el número máximo de usuarios que se devuelven. * Esta opción es muy útil en aquellos casos en los que hay * muchos usuarios en el registro y obtenerlos todos a la vez * no es nada práctico. El valor 0 significa que se han de * obtener todos los usuarios y debe utilizarse con atención. * @return un objeto Result que contiene la lista de usuarios * solicitados y un distintivo para indicar si hay más usuarios * @deprecated Este método se pondrá en desuso en el futuro. * @exception NotImplementedException emite esta excepción en raras ocasiones * si no es práctico obtener esta información de ninguno de los * grupos del registro. * @exception EntryNotFoundException si el grupo no existe en el * registro * @exception CustomRegistryException si se produce algún problema * específico del registro * @exception RemoteException ya que amplía la interfaz java.rmi.Remote **/ public Result getUsersForGroup(String groupSecurityName, int limit) throws NotImplementedException, EntryNotFoundException, CustomRegistryException, RemoteException; /** * Este método lo implementa internamente WebSphere Application Server * Server en este release. No se requieren de este método las implementaciones del * registro personalizado en este release. Devuelve null en la implementación. * * Recuerde que dado que no se llama a este método, también puede devolver la * excepción NotImplementedException como indica la documentación anterior. * **/ public com.ibm.websphere.security.cred.WSCredential createCredential(String userSecurityName) throws NotImplementedException, EntryNotFoundException, CustomRegistryException, RemoteException; }