Ryzom API/AppZone: Unterschied zwischen den Versionen

Aus EnzyklopAtys

Wechseln zu: Navigation, Suche
(Die Seite wurde neu angelegt: „<noinclude>{{Trad|DE=Ryzom API/AppZone|EN=Ryzom API/AppZone|palette=api|H=1}}</noinclude> Benutzerauthentifizierung für in AppZone registrierte Anwendungen ==…“)
 
(kein Unterschied)

Aktuelle Version vom 27. Mai 2023, 14:00 Uhr

de:Ryzom API/AppZone en:Ryzom API/AppZone
 
UnderConstruction.png
Übersetzung zur Überprüfung
Gib nicht den Mitwirkenden die Schuld, sondern komm und hilf ihnen. 😎

Benutzerauthentifizierung für in AppZone registrierte Anwendungen

Verwendung

URL-Werte
user -- base64 kodiertes php serialisiertes Array
checksum -- sha1 hash_hmac mit geheimem App-Schlüssel aus AppZone

Aufgrund 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.

PHP-Interface

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.

Konstanten welche definiert sein sollten :
RYAPI_AUTH_KEY
geheimer Schlüssel in der AppZone
wenn leer, dann werden die Benutzerdaten nicht überprüft (nicht empfohlen)
RYAPI_APP_URL
App-Url in der AppZone
wenn leer, dann wird automatisch die am besten ermittelte Url verwendet
wenn false, dann wird die Anwendungs-Url nicht verifiziert
RYAPI_APP_MAXAGE
Höchstalter in Sekunden für die Gültigkeit der AppZone-Url
wenn 0, wird der Zeitstempel (timestamp) nicht verifiziert
<?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}).";
  }