Benutzerauthentifizierung für in AppZone registrierte Anwendungen
user
-- base64 kodiertes php serialisiertes Arraychecksum
-- sha1 hash_hmac mit geheimem App-Schlüssel aus AppZoneAufgrund von php serialize muss die Prüfsumme validiert werden, bevor der Benutzerwert sicher verwendet werden kann.
Eine validierende Prüfsumme bietet auch eine starke Garantie dafür, daß der Benutzer derjenige ist, der er vorgibt zu sein.
Beispiel, wie die Rückmeldung erstellt wird:
$userArray = [
'timestamp' => "0.9696200 1503915319",
'app_url' => 'http://...',
'id' => "1",
'char_name' => 'Spieler',
'race' => 'Tryker',
'cult' => 'Neutral',
'civ' => 'Neutral',
'organization' => 'Marodeur',
'guild_id' => '105906000',
'guild_icon' => '17',
'guild_name' => 'Gilde',
'grade' => 'Anführer',
'lang' => 'de'
];
$user = base64_encode(serialize($userArray));
$checksum = hash_hmac('sha1', $user, $appKey);
timestamp
enthält Mikrosekunden und Sekunden, in denen die Antwort erstellt wurde, und sollte überprüft werden, um zu verhindern, dass dieselbe Antwort mehrfach wiedergegeben wird.
app_url
muss aktiviert werden, um zu verhindern, dass dieselbe AppZone-Antwort in anderen Anwendungen verwendet wird.
ryzom_app_authenticate(&$user)
Diese Funktion überprüft die AppZone-Benutzer- und -Prüfsummen-URL-Parameter. Verwendet $_GET['user'] und $_GET['checksum'] direkt.
Die Funktion gibt bei Erfolg den booleschen Wert true zurück. Die Variable $user enthält Informationen von AppZone oder eine Fehlermeldung, wenn ein Fehler aufgetreten ist.
$_SESSION['app.user']
|
ist für künftige Anfragen gesetzt. PHP-Sitzung ist erforderlich. |
RYAPI_AUTH_KEY
RYAPI_APP_URL
RYAPI_APP_MAXAGE
<?php
require_once "ryzomapi_lite.php";
define('RYAPI_AUTH_KEY', 'secret-key');
define('RYAPI_APP_URL', 'http://app.url/');
define('RYAPI_APP_MAXAGE', 30);
session_start();
$user = false;
if (ryzom_app_authenticate($user)) {
$charName = htmlspecialchars($user['char_name']);
echo "Hallo {$charName}!";
} else {
$error = htmlspecialchars($user);
echo "Autentifizierungs-Fehler ({$error}).";
}