Punto de conexión para el cifrado de contraseñas personalizado

Un punto de conexión para el cifrado de contraseñas personalizado puede crearse para cifrar y descifrar todas las contraseñas de WebSphere Application Server que se codifiquen y decodifiquen actualmente mediante la codificación en base 64.

La clase de implementación de este punto de conexión es responsable de gestionar las claves, determinar el algoritmo de cifrado que se va a utilizar y proteger el secreto maestro. El tiempo de ejecución de WebSphere Application Server almacena las contraseñas cifradas en sus ubicaciones existentes precedidas de distintivos {custom:alias} en lugar de distintivos {xor}. La parte custom del distintivo indica que se trata de un algoritmo personalizado. La parte alias del distintivo se especifica mediante la implementación personalizada, que sirve para indicar cómo se cifra la contraseña. La implementación puede incluir el alias de clave, el algoritmo de cifrado, la modalidad de cifrado y el relleno de cifrado.

Un proveedor personalizado de este punto de conexión debe implementar una interfaz que esté diseñada para cifrar y descifrar contraseñas. El tiempo de ejecución de WebSphere Application Server llama a la interfaz siempre que el punto de conexión personalizado esté habilitado. El algoritmo personalizado se convierte en uno de los algoritmos soportados cuando el punto de conexión esté habilitado. Otros algoritmos soportados incluyen {xor} (codificación estándar en base 64) y {os400}, que se utiliza en la plataforma iSeries.

Los siguientes ejemplos ilustran la interfaz com.ibm.wsspi.security.crypto.CustomPasswordEncryption:
paquete com.ibm.wsspi.security.crypto;
public interface CustomPasswordEncryption
{

    /**
     * La operación de cifrado toma una serie con codificación UTF-8 en forma de un byte[].
     * El byte[] se genera a partir de String.getBytes("UTF-8").
     * Se devuelve un byte[] cifrado de la implementación del objeto
     * EncryptedInfo.  Adicionalmente, se devuelve un alias de clave lógica en el objeto EncryptedInfo 
     * que se devuelve al método de descifrado para determinar qué clave se ha
     * utilizado para cifrar esta contraseña. El tiempo de ejecución de WebSphere Application Server
     * no conoce el algoritmo o la clave utilizada para cifrar los datos.
     *
     * @param byte[]
     * @return com.ibm.wsspi.security.crypto.EncryptedInfo
     * @throws com.ibm.wsspi.security.crypto.PasswordEncryptException
     **/
    public EncryptedInfo encrypt (byte[] decrypted_bytes) throws PasswordEncryptException;
    
    /**
     * La operación de descifrado toma el objeto EncryptedInfo que contiene un byte[] 
     * y el alias de clave lógico y lo convierte al byte[] descifrado.  El mandato      * El tiempo de ejecución de WebSphere Application Server convierte el byte[] en una serie
     * utilizando una nueva serie (byte[], "UTF-8");
     *
     * @param com.ibm.wsspi.security.crypto.EncryptedInfo 
     * @return byte[]
     * @throws com.ibm.wsspi.security.crypto.PasswordDecryptException
     **/
    public byte[] decrypt (EncryptedInfo info) throws PasswordDecryptException;

    /**
     * Lo siguiente se reserva para uso futuro y actualmente el tiempo 
     * de ejecución de WebSphere Application Server no lo llama.
     *
     * @param java.util.HashMap
     **/
    public void initialize (java.util.HashMap initialization_data);
}
La clase com.ibm.wsspi.security.crypto.EncryptedInfo contiene los bytes cifrados con el alias definido por el usuario que está asociado con los bytes cifrados. Esta información se devuelve al método de cifrado para ayudar a determinar cómo se ha cifrado la contraseña originalmente.
paquete com.ibm.wsspi.security.crypto;
public class EncryptedInfo
{
    private byte[] bytes;
    private String alias;

/**
 * Este constructor toma los bytes cifrados y un keyAlias como parámetros.
 * Este constructor se utiliza para ir y volver del tiempo de ejecución de WebSphere Application Server
 * para permitir que el tiempo de ejecución asocie los bytes con una clave específica que
 * se utiliza para cifrar los bytes.
 */

    public EncryptedInfo (byte[] encryptedBytes, String keyAlias)
    {
        bytes = encryptedBytes;
        alias = keyAlias;
    }

/**
 * Este mandato devuelve los bytes cifrados.
 *
 * @return byte[]
 */
    public byte[] getEncryptedBytes()
    {
        return bytes;
    }

/**
 * Este mandato devuelve el alias de clave.  El alias de clave es una serie lógica que 
 * está asociada con la contraseña cifrada del modelo. El formato es 
 * {custom:keyAlias}contraseña_cifrada. Generalmente, sólo se coloca el alias de clave 
 * aquí, pero la información de algoritmo también se puede devolver.  
 *
 * @return String
 */
    public String getKeyAlias()
    {
        return alias;
    }

}

El método de cifrado es llamado para el proceso de contraseñas siempre que se haya configurado la clase personalizada y se haya habilitado el cifrado personalizado. Se llama al método de cifrado siempre que la clase personalizada esté configurada y la contraseña contenga el distintivo {custom:alias}. Se elimina la etiqueta {custom:alias} antes de la descodificación.Para obtener más información, consulte Habilitación del cifrado de contraseñas personalizado.


Icon that indicates the type of topic Concept topic



Timestamp icon Last updated: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=csec_plugpoint_custpass_encrypt
File name: csec_plugpoint_custpass_encrypt.html