JW-Token generieren
Ein Token wird über die Tokens-Ressource angefordert. Dazu rufen Sie die POST-Route /application/tokens mit Benutzername und Passwort im HTTP-Request-Body auf:
{
"username": "jdoe",
"password": "2r5iq|!O%{o@?ApR1q%8"
}
Bitte beachten Sie: Da das Passwort in Klartext übertragen wird, sollte eine sichere Verbindung (HTTPS) genutzt werden.
Der Antworttext wird im folgenden JSON-Format zurückgeliefert:
{
"tokens": [
"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.ey..."
]
}
Der Token ist standardmäßig 600 Sekunden gültig. Möchten Sie einen Token mit längerer Gültigkeitsdauer erstellen, geben Sie diese in dem Parameter lifetime in den HTTP-Request-Body an. Die erlaubte Höchstdauer beträgt 3600 Sekunden. Nach Ablauf der Gültigkeitsdauer muss ein neuer Token erstellt werden.
{
"username": "jdoe",
"password": "2r5iq|!O%{o@?ApR1q%8",
"lifetime": 1200
}
Die nachfolgenden Anfragen übertragen den Token in einem X-Jobrouter-Authorization-Header. Beispiel:
X-Jobrouter-Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.ey...
Beispiel
// Client wurde bereits initialisiert
try {
// Benutzer authentifizieren
$response = $client->post('application/tokens', [
'json' => [
'username' => 'jdoe',
'password' => '2r5iq|!O%{o@?ApR1q%8',
],
]);
// Token ermitteln
$tokenData = json_decode($response->getBody(), true);
$token = $tokenData['tokens'][0];
echo "Token: " . $token;
} catch (Exception $e) {
echo "Fehler: " . $e->getMessage();
}
$data = '{
"username": "jdoe",
"password": "2r5iq|!O%{o@?ApR1q%8"
}';
$headers = [
'Accept: application/json',
'Content-Type: application/json',
];
$url = 'http://example.org/jobrouter/api/rest/v2/application/tokens;
$curlHandle = curl_init();
curl_setopt($curlHandle, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curlHandle, CURLOPT_URL, $url);
curl_setopt($curlHandle, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curlHandle, CURLOPT_POST, 1);
curl_setopt($curlHandle, CURLOPT_POSTFIELDS, $data);
curl_setopt($curlHandle, CURLOPT_COOKIEJAR, 'path/to/cooke/file.cookie');
$response = curl_exec($curlHandle);
$code = curl_getinfo($curlHandle, CURLINFO_HTTP_CODE);
if ($code === 201) {
$response = json_decode($response, true);
$token = $response['tokens'][0];
} else {
echo 'Fehler beim Authentifizieren: ' . $code;
echo var_export($response, true);
}
curl_close();