Point de connexion pour le chiffrement de mot de passe personnalisé
Un point de connexion pour le chiffrement de mot de passe personnalisé peut être créé pour chiffrer et déchiffrer tous les mots de passe chiffrés ou déchiffrés à l'aide du système d'encodage Base64 dans WebSphere Application Server.
La classe d'implémentation de ce point de connexion est chargée de gérer les clés, de déterminer l'algorithme de chiffrement à utiliser et de protéger le secret maître. Le module d'exécution de WebSphere Application Server enregistre les mots de passe chiffrés à leurs emplacements actuels, en les faisant précéder de balises {custom:alias} au lieu de {xor}. La partie personnalisée (custom) de la balise indique qu'il s'agit d'un algorithme personnalisé. La partie alias de la balise est spécifiée par l'implémentation personnalisée qui permet de déterminer le mode de chiffrement du mot de passe. L'implémentation peut inclure l'alias de clé, l'algorithme de chiffrement, le mode de chiffrement ou le remplissage de chiffrement.
Un fournisseur personnalisé de ce point de connexion doit implémenter une interface conçue pour chiffrer et déchiffrer les mots de passe. Cette interface est appelée par le module d'exécution de WebSphere Application Server à chaque fois que le point de connexion personnalisé est activé. L'algorithme personnalisé est pris en charge lorsque le point de connexion est activé. Parmi les autres algorithmes pris en charge figurent {xor} (encodage base64 standard) et {os400}, ce dernier étant utilisé sur la plateforme iSeries.
package com.ibm.wsspi.security.crypto;
public interface CustomPasswordEncryption
{
/**
* L'opération de chiffrement accepte une chaîne codée au format UTF-8 sous la forme d'un byte[].
* Le byte[] est généré à partir de String.getBytes("UTF-8").
* Un byte[] chiffré est renvoyé à partir de l'implémentation dans l'objet
* obtenir l'objet AccessIntent. De plus, un alias de clé logique est renvoyé dans l'objet EncryptedInfo
* qui est transmis à la méthode de déchiffrement pour déterminer quelle clé était
* utilisée pour chiffrer ce mot de passe. Le module d'exécution de WebSphere
Application Server
* ne connaît ni l'algorithme ni la clé utilisée pour chiffrer les données.
*
* @param byte[]
* @return com.ibm.wsspi.security.crypto.EncryptedInfo
* @throws com.ibm.wsspi.security.crypto.PasswordEncryptException
**/
public EncryptedInfo encrypt (byte[] decrypted_bytes) throws PasswordEncryptException;
/**
* L'opération de déchiffrement accepte l'objet EncryptedInfo contenant un byte[]
* et l'alias de clé logique, et le convertit en byte[] déchiffré. L'élément de
* module d'exécution de WebSphere
Application Server convertit le byte[] en chaîne
* en utilisant la nouvelle chaîne (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;
/**
* L'élément suivant est réservé pour une utilisation future et n'est pas
* appelé actuellement par le module d'exécution de WebSphere
Application Server.
*
* @param java.util.HashMap
**/
public void initialize (java.util.HashMap initialization_data);
}
package com.ibm.wsspi.security.crypto;
public class EncryptedInfo
{
private byte[] bytes;
private String alias;
/**
* Ce constructeur accepte les octets chiffrés et un keyAlias comme paramètres.
* Il autorise les transmissions vers ou à partir du module d'exécution de WebSphere
Application Server
* afin que les octets puissent être associés à une clé spécifique
* utilisée pour chiffrer ces derniers.
*/
public EncryptedInfo (byte[] encryptedBytes, String keyAlias)
{
bytes = encryptedBytes;
alias = keyAlias;
}
/**
* Cette commande renvoie les octets chiffrés.
*
* @return byte[]
*/
public byte[] getEncryptedBytes()
{
return bytes;
}
/**
* Cette commande renvoie l'alias de clé. Ce dernier est une chaîne logique qui est
* associée au mot de passe chiffré dans le modèle. Le format est
* {custom:keyAlias}encrypted_password. En général, seul l'alias de clé est placé
* à cet emplacement, mais les informations d'algorithme peuvent également être renvoyées.
*
* @return chaîne
*/
public String getKeyAlias()
{
return alias;
}
}
La méthode de chiffrement est appelée pour le traitement des mots de passe chaque fois que la classe personnalisée est configurée et que le chiffrement personnalisé est activé. La méthode de déchiffrement est appelée à chaque fois que la classe personnalisée est configurée et que le mot de passe contient la balise {custom:alias}. La balise custom:alias est supprimée avant le déchiffrement. Pour plus d'informations, voir Activation du chiffrement des mots de passe personnalisés.