Damit beim direkten Zugriff auf eine Ergebnisliste über eine zu diesem Zweck generierte URL überprüft werden kann, ob diese gültig ist, muss für die URL bei der Generierung eine Signatur erstellt und diese als zusätzlicher URL-Parameter angehängt werden (siehe Abschnitt Integration einer Ergebnisliste ohne Passphrase bzw. Abschnitt Integration mit Passphrase):
URL ohne Verwendung der Passphrase
http://servername/JobRouter/modules/jobarchive/index.php?
action=showresultlist&id=<resultListId>&q=<queryParameters>&signature=<signature>
Zu signierender Teil der URL:
<urlPartToSign> = /JobRouter/modules/jobarchive/index.php?
action=showresultlist&id=<resultListId>&q=<queryParameters>
Bitte beachten Sie: Das Protokoll (z.B. https) und der Servername müssen beim Signieren weggelassen werden.
URL mit Verwendung der Passphrase
http://servername/JobRouter/modules/jobarchive/index.php?
action=showresultlist&id=<resultListId>&eq=<encryptedQueryParameters>&signature=<signature>
Zu signierender Teil der URL:
<urlPartToSign> =/JobRouter/modules/jobarchive/index.php?
action=showresultlist&id=<resultListId>&eq=<encryptedQueryParameters>
Bitte beachten Sie: Das Protokoll (z.B. https) und der Servername müssen beim Signieren weggelassen werden.
Die Signatur für die URL wird folgendermaßen erzeugt:
<signature> = HASH_HMAC(SHA256_ALGORITHM, <urlPartToSign>, SHA512(<signatureKey>))
•Zunächst wird der SHA-512-Hash des Signaturschlüssels im Hexadezimalformat gebildet (Zeichenkette bestehend aus 128 Zeichen)
•Anschließend wird der Keyed-Hash Message Authentication Code (HMAC) des zu signierenden Teils der URL unter Anwendung des SHA-256-Algorithmus mit dem SHA-512-Hash des Signaturschlüssels als Schlüssel gebildet
Als Wert für den Signaturschlüssel <signatureKey> ist die Zeichenkette zu verwenden, welche in der Konfiguration der Ergebnisliste im JobRouter angezeigt wird.
Codeausschnitt für PHP
$signatureKeyHash = hash('sha512', $signatureKey);
$signature = hash_hmac('sha256', $urlPartToSign, $signatureKeyHash);
Codeausschnitt für Java
Mac hmac = Mac.getInstance("HmacSHA256");
hmac.init(getSignKey(signatureKey));
byte[] hmacBytes = hmac.doFinal(urlPartToSign.getBytes("UTF-8"));
StringBuffer hexSignature = new StringBuffer();
for (int i = 0; i < hmacBytes.length; i++) {
hexSignature.append(Integer.toString((hmacBytes[i] & 0xff) + 0x100, 16).substring(1));
}
String signature = hexSignature.toString();
Codeausschnitt für .NET
byte[] bytesToSign = UTF8Encoding.UTF8.GetBytes(urlPartToSign);
byte[] key = getSignKey(signatureKey);
HMACSHA256 hmac = new HMACSHA256(key);
byte[] hmacBytes = hmac.ComputeHash(bytesToSign);
StringBuilder hexSignature = new StringBuilder(hmacBytes.Length * 2);
foreach (byte b in hmacBytes) {
hexSignature.AppendFormat("{0:x2}", b);
}
string signature = hexSignature.ToString();