<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
		<id>https://de.wiki.ryzom.com/w/index.php?action=history&amp;feed=atom&amp;title=Ryzom_API%2FAppZone</id>
		<title>Ryzom API/AppZone - Versionsgeschichte</title>
		<link rel="self" type="application/atom+xml" href="https://de.wiki.ryzom.com/w/index.php?action=history&amp;feed=atom&amp;title=Ryzom_API%2FAppZone"/>
		<link rel="alternate" type="text/html" href="https://de.wiki.ryzom.com/w/index.php?title=Ryzom_API/AppZone&amp;action=history"/>
		<updated>2026-04-29T09:10:04Z</updated>
		<subtitle>Versionsgeschichte dieser Seite in EnzyklopAtys</subtitle>
		<generator>MediaWiki 1.29.1</generator>

	<entry>
		<id>https://de.wiki.ryzom.com/w/index.php?title=Ryzom_API/AppZone&amp;diff=35034&amp;oldid=prev</id>
		<title>Leda: Die Seite wurde neu angelegt: „&lt;noinclude&gt;{{Trad|DE=Ryzom API/AppZone|EN=Ryzom API/AppZone|palette=api|H=1}}&lt;/noinclude&gt; Benutzerauthentifizierung für in AppZone registrierte Anwendungen ==…“</title>
		<link rel="alternate" type="text/html" href="https://de.wiki.ryzom.com/w/index.php?title=Ryzom_API/AppZone&amp;diff=35034&amp;oldid=prev"/>
				<updated>2023-05-27T13:00:09Z</updated>
		
		<summary type="html">&lt;p&gt;Die Seite wurde neu angelegt: „&amp;lt;noinclude&amp;gt;{{Trad|DE=Ryzom API/AppZone|EN=Ryzom API/AppZone|palette=api|H=1}}&amp;lt;/noinclude&amp;gt; Benutzerauthentifizierung für in AppZone registrierte Anwendungen ==…“&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;noinclude&amp;gt;{{Trad|DE=Ryzom API/AppZone|EN=Ryzom API/AppZone|palette=api|H=1}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
Benutzerauthentifizierung für in AppZone registrierte Anwendungen&lt;br /&gt;
== Verwendung ==&lt;br /&gt;
;URL-Werte&lt;br /&gt;
:&amp;lt;code&amp;gt;user&amp;lt;/code&amp;gt; -- base64 kodiertes php serialisiertes Array&lt;br /&gt;
:&amp;lt;code&amp;gt;checksum&amp;lt;/code&amp;gt; -- sha1 hash_hmac mit geheimem App-Schlüssel aus AppZone&lt;br /&gt;
&lt;br /&gt;
Aufgrund von php serialize muss die Prüfsumme validiert werden, bevor der Benutzerwert sicher verwendet werden kann.&amp;lt;br /&amp;gt;&lt;br /&gt;
Eine validierende Prüfsumme bietet auch eine starke Garantie dafür, daß der Benutzer derjenige ist, der er vorgibt zu sein.&lt;br /&gt;
&lt;br /&gt;
Beispiel, wie die Rückmeldung erstellt wird:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;$userArray = [&lt;br /&gt;
  'timestamp' =&amp;gt; &amp;quot;0.9696200 1503915319&amp;quot;,&lt;br /&gt;
  'app_url' =&amp;gt; 'http://...',&lt;br /&gt;
  'id' =&amp;gt; &amp;quot;1&amp;quot;,&lt;br /&gt;
  'char_name' =&amp;gt; 'Spieler',&lt;br /&gt;
  'race' =&amp;gt; 'Tryker',&lt;br /&gt;
  'cult' =&amp;gt; 'Neutral',&lt;br /&gt;
  'civ' =&amp;gt; 'Neutral',&lt;br /&gt;
  'organization' =&amp;gt; 'Marodeur',&lt;br /&gt;
  'guild_id' =&amp;gt; '105906000',&lt;br /&gt;
  'guild_icon' =&amp;gt; '17',&lt;br /&gt;
  'guild_name' =&amp;gt; 'Gilde',&lt;br /&gt;
  'grade' =&amp;gt; 'Anführer',&lt;br /&gt;
  'lang' =&amp;gt; 'de'&lt;br /&gt;
];&lt;br /&gt;
&lt;br /&gt;
$user = base64_encode(serialize($userArray));&lt;br /&gt;
$checksum = hash_hmac('sha1', $user, $appKey);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
                &lt;br /&gt;
&amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt; 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.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;app_url&amp;lt;/code&amp;gt; muss aktiviert werden, um zu verhindern, dass dieselbe AppZone-Antwort in anderen Anwendungen verwendet wird.&lt;br /&gt;
&lt;br /&gt;
=== PHP-Interface ===&lt;br /&gt;
 ryzom_app_authenticate(&amp;amp;$user)&lt;br /&gt;
&lt;br /&gt;
Diese Funktion überprüft die AppZone-Benutzer- und -Prüfsummen-URL-Parameter. Verwendet $_GET['user'] und $_GET['checksum'] direkt.&amp;lt;br /&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;float:left; margin-right: 10px;padding: 0px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;$_SESSION['app.user']&amp;lt;/syntaxhighlight&amp;gt;|| ist für künftige Anfragen gesetzt. PHP-Sitzung ist erforderlich.&lt;br /&gt;
|} {{clear}}&lt;br /&gt;
:'''Konstanten''' welche definiert sein sollten :&lt;br /&gt;
&lt;br /&gt;
::&amp;lt;code&amp;gt;RYAPI_AUTH_KEY&amp;lt;/code&amp;gt;&lt;br /&gt;
:::geheimer Schlüssel in der AppZone&lt;br /&gt;
:::wenn leer, dann werden die Benutzerdaten nicht überprüft (nicht empfohlen) &lt;br /&gt;
::&amp;lt;code&amp;gt;RYAPI_APP_URL&amp;lt;/code&amp;gt;&lt;br /&gt;
:::App-Url in der AppZone&lt;br /&gt;
:::wenn leer, dann wird automatisch die am besten ermittelte Url verwendet&lt;br /&gt;
:::wenn false, dann wird die Anwendungs-Url nicht verifiziert &lt;br /&gt;
::&amp;lt;code&amp;gt;RYAPI_APP_MAXAGE&amp;lt;/code&amp;gt;&lt;br /&gt;
:::Höchstalter in Sekunden für die Gültigkeit der AppZone-Url&lt;br /&gt;
:::wenn 0, wird der Zeitstempel (timestamp) nicht verifiziert &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&amp;lt;?php&lt;br /&gt;
  require_once &amp;quot;ryzomapi_lite.php&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
  define('RYAPI_AUTH_KEY', 'secret-key');&lt;br /&gt;
  define('RYAPI_APP_URL', 'http://app.url/');&lt;br /&gt;
  define('RYAPI_APP_MAXAGE', 30);&lt;br /&gt;
&lt;br /&gt;
  session_start();&lt;br /&gt;
&lt;br /&gt;
  $user = false;&lt;br /&gt;
  if (ryzom_app_authenticate($user)) {&lt;br /&gt;
    $charName = htmlspecialchars($user['char_name']);&lt;br /&gt;
    echo &amp;quot;Hallo {$charName}!&amp;quot;;&lt;br /&gt;
  } else {&lt;br /&gt;
    $error = htmlspecialchars($user);&lt;br /&gt;
    echo &amp;quot;Autentifizierungs-Fehler ({$error}).&amp;quot;;&lt;br /&gt;
  }&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Kategorie:Ryzom API]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Leda</name></author>	</entry>

	</feed>