Please enable JavaScript to view this site.

Administrationshandbuch

Wenn eine Passphrase in der Ergebnisliste hinterlegt ist, sind die Parameter in der URL zusätzlich zu verschlüsseln sowie zusätzlich die Signatur der URL zu übergeben.

Die URL für die Integration mit Verwendung der Passphrase besitzt folgende Grundstruktur:

http://servername/JobRouter/modules/jobarchive/index.php?action=showresultlist&id=<resultListId>&eq=<encryptedQueryParameters>&signature=<signature>

<resultListId> = Id der Ergebnisliste

<encryptedQueryParameters> = URL-Parameter (verschlüsselt und Base64-kodiert)

<signature> = Signatur der URL auf Basis des Signaturschlüssels (siehe Abschnitt Erzeugung der Signatur für URLs)

Der Parameterwert <encryptedQueryParameters> wird folgendermaßen erzeugt:

<encryptedQueryParameters> = URL_ENCODE( BASE64_ENCODE(

    BINARY_TO_HEX(

        ENCRYPT(

            viewer=<viewer>&viewMode=<viewMode>&username=<username>&
            validFrom=<validFrom>&validUntil=<validUntil>&
            filters= URL_ENCODE( BASE64_ENCODE( <filters> ))

        )

    )

))

Für die Verschlüsselung (ENCRYPT) der URL-Parameter wird der AES-Algorithmus im CBC-Modus mit PKCS5-Padding verwendet. Hierzu wird ein Key sowie ein Initialisierungsvektor (IV) benötigt. Diese werden aus der Passphrase der Ergebnisliste abgeleitet:

Zunächst wird der SHA-512-Hash der Passphrase im Hexadezimalformat gebildet (Zeichenkette bestehend aus 128 Zeichen)

Die ersten 32 Zeichen des SHA-512-Hashs werden als Key verwendet

Die Zeichen 32 bis 48 des SHA-512-Hashs werden als Initialisierungsvektor verwendet

Codeausschnitt für PHP

$key = getKey($passphrase);
$blocksize = 16;
$data = pkcs5Pad($stringToEncrypt, $blocksize);
$iv = getIv($passphrase);
$encrypted = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $data, MCRYPT_MODE_CBC, $iv);

Bitte beachten Sie: Die PHP- Funktion mcrypt_encrypt wird seit PHP-Version 7.2 nicht mehr unterstützt. Es gibt jedoch eine alternative Bibliothek, die in JobRouter bereits eingebunden ist und die Funktionalität von mcrypt_encrypt nachbildet, wenn Sie die PHP-Scripte innterhalb von JobRouter verwenden. Bei externen PHP-Scripten müssen Sie die alternative Bibliothek selbst einbinden.
Diese finden Sie hier: https://github.com/phpseclib/mcrypt_compat

Codeausschnitt für Java

Cipher c = Cipher.getInstance("AES/CBC/PKCS5Padding");
c.init(Cipher.ENCRYPT_MODE, getKey(passphrase), getIv(passphrase));
byte[] encrypted = c.doFinal(stringToEncrypt.getBytes("UTF-8")); 

Codeausschnitt für .NET

byte[] bytesToEncrypt = UTF8Encoding.UTF8.GetBytes(stringToEncrypt);
byte[] key = getKey(passphrase);
byte[] iv = GetIV(passphrase);
RijndaelManaged aes = new RijndaelManaged();
ICryptoTransform encryptor = aes.CreateEncryptor(key, iv);
byte[] encryptedData = encryptor.TransformFinalBlock(bytesToEncrypt, 0, bytesToEncrypt.Length);

Nach der Verschlüsselung sind die Binärdaten in das Hexadezimalformat (BINARY_TO_HEX) zu konvertieren.

Codeausschnitt für PHP

$encryptedHexString = bin2hex($encrypted);

Codeausschnitt für Java

StringBuffer sb = new StringBuffer();
for (int i = 0; i < encrypted.length; i++) {
    sb.append(Integer.toString((encrypted[i] & 0xff) + 0x100, 16).substring(1));
}
String encryptedHexString = sb.toString();

Codeausschnitt für .NET

StringBuilder hex = new StringBuilder(encryptedData.Length * 2);
foreach (byte b in encryptedData) {
    hex.AppendFormat("{0:x2}", b);
}
string encryptedHexString = hex.ToString();