Verbindungspunkt für angepasste Kennwortverschlüsselung

Sie können einen Verbindungspunkt für die angepasste Kennwortverschlüsselung erstellen, um alle Kennwörter in WebSphere Application Server, die derzeit mit der Base64-Codierung codiert oder decodiert werden, zu verschlüsseln und zu entschlüsseln.

Die Implementierungsklasse dieses Verbindungspunkts ist für die Verwaltung von Schlüsseln, die Bestimmung des zu verwendenden Verschlüsselungsalgorithmus und den Schutz des geheimen geheimen Master-Secret-Werts zuständig. Die Laufzeit von WebSphere Application Server speichert die verschlüsselten Kennwörter an ihrer bisherigen Position und stellt ihnen an Stelle von {xor}-Tags {custom:alias}-Tags voran. Der custom-Abschnitt des Tags zeigt an, dass es sich um einen angepassten Algorithmus handelt. Der alias-Abschnitt des Tags wird von der angepassten Implementierung angegeben, mit der festgestellt werden kann, wie das Kennwort verschlüsselt wird. Die Implementierung kann den Schlüsselalias, den Verschlüsselungsalgorithmus, der Verschlüsselungsmodus oder die Auffüllungsmethode der Verschlüsselung angeben.

Ein angepasster Provider dieses Verbindungspunktes muss eine Schnittstelle für die Verschlüsselung und Entschlüsselung von Kennwörtern implementieren. Die Laufzeit von WebSphere Application Server ruft diese Schnittstelle jedes Mal auf, wenn der angepasste Verbindungspunkt aktiviert wird. Der angepasste Algorithmus wird bei aktiviertem Verbindungspunkt zu einem der unterstützten Algorithmen. Weitere unterstützte Algorithmen sind {xor} (Base64-Standardcodierung) und {os400} für die iSeries-Plattform.

Das folgende Beispiel zeigt die Schnittstelle "com.ibm.wsspi.security.crypto.CustomPasswordEncryption":
package com.ibm.wsspi.security.crypto;
public interface CustomPasswordEncryption
{

    /**
     * Die Verschlüsselung verwendet eine mit UTF-8 codierte Zeichenfolge in Form eines byte[].
     * Das byte[] wird von String.getBytes("UTF-8") generiert.
     * Die Implementierung im EncryptedInfo-Objekt gibt ein verschlüsseltes byte[] zurück.
     * Dieses Objekt enthält auch den Alias eines logischen Schlüssels, der an die
     * Entschlüsselungsmethode zurückgegeben wird, um festzustellen, mit welchem Schlüssel
     * dieses Kennwort verschlüsselt wurde. Die Laufzeit von WebSphere Application Server
     * weiß nicht, mit welchem Algorithmus oder Schlüssel die Daten verschlüsselt wurden.
     *
     * @param byte[]
     * @return com.ibm.wsspi.security.crypto.EncryptedInfo
     * @throws com.ibm.wsspi.security.crypto.PasswordEncryptException
     **/
    public EncryptedInfo encrypt (byte[] decrypted_bytes) throws PasswordEncryptException;
    
    /**
     * Die Entschlüsselung verwendet das EncryptedInfo-Objekt mit dem byte[]
     * und dem Alias des logischen Schlüssels und wandelt es in das
     * entschlüsselte byte[] um. * De Laufzeit von WebSphere Application Server
     *  wandelt das byte[] mit new String (byte[], "UTF-8") in eine Zeichenfolge um.
     *
     * @param com.ibm.wsspi.security.crypto.EncryptedInfo 
     * @return byte[]
     * @throws com.ibm.wsspi.security.crypto.PasswordDecryptException
     **/
    public byte[] decrypt (EncryptedInfo info) throws PasswordDecryptException;

    /**
     * Die folgende Zeile ist für eine künftige Verwendung reserviert und wird
     * derzeit nicht von der WAS-Laufzeit aufgerufen.
     *
     * @param java.util.HashMap
     **/
    public void initialize (java.util.HashMap initialization_data);
}
Die Klasse "com.ibm.wsspi.security.crypto.EncryptedInfo" enthält die verschlüsselten Bytes mit dem benutzerdefinierten Aliasnamen, der den verschlüsselten Bytes zugeordnet ist. Diese Informationen werden an die Verschlüsselungsmethode zurückgegeben, um festzustellen, wie das Kennwort ursprünglich verschlüsselt wurde.
package com.ibm.wsspi.security.crypto;
public class EncryptedInfo
{
    private byte[] bytes;
    private String alias;

/**
 * Dieser Konstruktor verwendet die verschlüsselten Bytes und einen Schlüsselalias
 * als Parameter.  Die WAS-Laufzeit muss die Bytes einem bestimmten Schlüssel zuordnen,
 * der für die Verschlüsselung der Bytes verwendet wird. Die dafür erforderlichen
 * Übergaben an die und von der WAS-Laufzeit werden mit diesem Konstruktor durchgeführt.
 */

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

/**
 * Dieser Befehl gibt die verschlüsselten Bytes zurück.
 *
 * @return byte[]
 */
    public byte[] getEncryptedBytes()
    {
        return bytes;
    }

/**
 * Dieser Befehl gibt den Schlüsselalias zurück. Dieser Alias ist eine logische
 * Zeichenfolge, die dem verschlüsselten Kennwort im Modell zugeordnet ist. Das
 * Format ist {custom:keyAlias}encrypted_password. In der Regel steht hier nur
 * der Schlüsselalias, es können aber auch die Algorithmusinformationen
 * zurückgegeben werden.
 *
 * @return String
 */
    public String getKeyAlias()
    {
        return alias;
    }

}

Das Verschlüsselungsverfahren wird für die Kennwortverarbeitung aufgerufen, sofern die angepasste Klasse konfiguriert und die eigene Verschlüsselung aktiviert ist. Das Entschlüsselungsverfahren wird aufgerufen, wenn die angepasste Klasse konfiguriert ist und das Kennwort mit dem Tag {custom:alias} versehen ist. Vor der Entschlüsselung wird das Tag {custom:alias} gelöscht. Weitere Informationen hierzu finden Sie im Artikel Angepasste Kennwortverschlüsselung aktivieren.


Symbol, das den Typ des Artikels anzeigt. Konzeptartikel



Symbol für Zeitmarke Letzte Aktualisierung: 25.05.2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=csec_plugpoint_custpass_encrypt
Dateiname:csec_plugpoint_custpass_encrypt.html