Kundenseitiger Speicherort

So funktioniert's

Sie können einen benutzerdefinierten Speicher verwenden, um Nutzerdaten zu speichern. Die Nutzerdaten werden zwar ebenfalls aufseiten von Xsolla gespeichert, aber Passwörter werden nur durch einen benutzerdefinierten Speicher validiert.

Bei Verwendung des benutzerdefinierten Speichers haben Sie Zugriff auf folgende Funktionen:

Sie können das Login-Widget oder Ihre Anwendung, die die Login API-Methoden nutzt, als Client einsetzen. Die Interaktion zwischen dem Client und dem Xsolla-Login-Server läuft wie folgt ab:

  1. Der Client sendet Anfragen an den Xsolla-Login-Server. Das Anfrageformat ist in den Methodengruppen JWT und General erläutert.
  2. Der Xsolla-Login-Server sendet Anfragen an Ihren Server. Befolgen Sie die Anleitung, um die Anfragen zu validieren.
  3. Der Xsolla-Login-Server verarbeitet eine Antwort von Ihrem Server und sendet das Ergebnis an den Client zurück.
  4. Der Client verarbeitet die Antwort.

Benutzerregistrierung

  1. Der Client sendet die Anfrage Register a New User an den Xsolla-Server.
  2. Der Xsolla-Login-Server sendet ein Anfrage an die URL für neue Nutzer. Die Antwort muss dem in dieser Anleitung angegebenen Format entsprechen.

Anfragebeispiel:

POST https://example.registration.com

Headers:
Content-Type: application/json
Authorization: Bearer {JWT}

Body:
{
  "email": "john@gmail.com",
  "password": "123456"
}

  1. Nutzerdaten werden in die Xsolla-Datenbank geschrieben, während der Parameter email als "unbestätigt" gekennzeichnet wird. Der Benutzer erhält eine E-Mail zur Kontobestätigung.
  2. Wenn Sie das Login-Widget integriert haben, wird der Benutzer auf die Seite weitergeleitet. Dabei wird ihm folgende Meldung angezeigt: Bitte bestätigen Sie Ihr Konto gemäß den Anweisungen, die wir Ihnen per E-Mail an {email} gesendet haben.

Authentifizierung über Benutzername und Passwort

  1. Der Client sendet die Anfrage Auth by Username and Password an den Xsolla-Server.
  2. Der Xsolla-Login-Server sendet ein Anfrage an die URL zur Benutzerverifizierung. Die Antwort muss dem in dieser Anleitung angegebenen Format entsprechen.

Anfragebeispiel:

POST https://example.authentication.com

Headers:
Content-Type: application/json
Authorization: Bearer {JWT}

Body:
{
  "email": "john@gmail.com",
  "password": "123456"
}

  1. Der Xsolla-Login-Server generiert einen Benutzer-JWT.
  2. Der Benutzer wird mittels token-Abfrageparameter zur login_url weitergeleitet. Der Benutzer-JWT ist im token-Parameter enthalten.

Note: Ein neuer Benutzer wird angelegt, wenn keine Benutzerdaten in die Xsolla-Datenbank geschrieben sind.

Authentifizierung über soziale Netzwerke

Um Nutzerdaten bei der Authentifizierung über soziale Netzwerke abzurufen, geben Sie die URL für das Authentifizieren über soziale Netzwerke an. Die von einem sozialen Netzwerk empfangene Anfrage samt der Daten werden an diese URL gesendet. Senden Sie Ihre URL für das Authentifizieren über soziale Netzwerke an den Account Manager, um Zugang zu dieser Funktion zu erhalten.

Authentifizierungsablauf:

  1. Der Client sendet die Anfrage Auth via Social Network an den Xsolla-Login-Server.
  2. Der Benutzer meldet sich in einem sozialen Netzwerk an.
  3. Der Xsolla-Login-Server verarbeitet die vom sozialen Netzwerk empfangenen Nutzerdaten und sendet einen Anfrage an die URL für das Authentifizieren über soziale Netzwerke. Die Antwort muss dem in dieser Anleitung angegebenen Format entsprechen.

Die Anfrage enthält Daten im temporären Token im Header Authorization: Bearer <JWT>. Der bei der Anfrage übermittelte Benutzer-JWT enthält folgende Daten:

ClaimTypBeschreibung
expUnix TimestampDas Verfallsdatum und die Verfallsuhrzeit des JWT. Die JWT-Lebensspanne beträgt 7 Minuten. Erforderlich.
iatUnix TimestampDas Ausgabedatum und die Ausgabeuhrzeit des JWT. Erforderlich.
issstringDer Dienst, der das JWT unterzeichnet hat https://login.xsolla.com. Erforderlich.
request_typestringKonstant: gateway_request. Erforderlich.
xsolla_login_project_idstring (UUID)Die ID Ihres Login-Projekts im Kundenportal. Erforderlich.
emailstringE-Mail-Adresse des Benutzers.
substring (UUID)Gespeicherte Benutzer-ID aufseiten des Xsolla-Login-Servers. Erforderlich.
usernamestringBenutzername.
providerstringName des für die Authentifizierung verwendeten sozialen Netzwerks. Erforderlich.
idstringBenutzer-ID im sozialen Netzwerk. Erforderlich.

Beispiel einer Token-Payload:

{
  "exp": 1573635020,
  "iat": 1573634600,
  "iss": "https://login.xsolla.com",
  "request_type": "gateway_request",
  "xsolla_login_project_id": "00000000-0000-0000-0000-000000000000",
  "sub": "00000000-0000-0000-0000-000000000000",
  "email": "example@test.com",
  "username": "Smith707",
  "provider": "google",
  "id": "123",
}

Anfragebeispiel:

POST https://example.social.authentication.com

Headers:
Content-Type: application/json
Authorization: Bearer {JWT}

Body:
{}

Zurücksetzen von Benutzerpasswörtern

  1. Der Client sendet die Anfrage Reset Password an den Xsolla-Login-Server.
  2. Der Xsolla-Login-Server sendet dem Benutzer eine Bestätigung über die Zurücksetzung des Passworts per E-Mail.
  3. Nachdem der Benutzer das Zurücksetzen des Passworts in der E-Mail bestätigt hat, wird er auf die entsprechende Seite weitergeleitet.
  4. Der Benutzer gibt ein neues Passwort ein.
  5. Der Xsolla-Login-Server sendet eine Anfrage an die URL zum Zurücksetzen des Passworts. Die Antwort muss dem in dieser Anleitung angegebenen Format entsprechen.

Anfragebeispiel:

POST https://example.reset.com

Headers:
Content-Type: application/json
Authorization: Bearer {JWT}

Body:
{
  "username": "john@gmail.com",
  "fields": {
    "password": "NewPa$$word1"
  }
}

Für wen ist es

Partner, die bereits das Login integriert und die standardmäßige JWT-Authentifizierung implementiert haben.

Wie komme ich dazu

So konfigurieren Sie die Verbindung zwischen dem Xsolla-Login-Server und dem Client:

  1. Verknüpfen Sie den kundenseitigen Speicher.
  2. Konfigurieren Sie die Verarbeitung der Anfragen vom Xsolla-Login-Server.

Verknüpfung des kundenseitigen Speichers

  1. Navigieren Sie im Kundenportal zu Login-Projekte > Allgemeine Einstellungen.
  2. Wählen Sie unter Nutzerdatenspeicherung die Option Kundenseitig aus.
  3. Geben Sie die URLs für das Senden von API-Anfragen ein:
    • URL zur Benutzerverifizierung
    • URL für neue Nutzer
    • URL für das Zurücksetzen des Passworts
    • URL zum Ändern der E-Mail-Adresse
  4. Implementieren Sie eine API, die in folgender Weise antwortet:
    • HTTP 200/HTTP 204 bei erfolgreicher Anfrage. Ein JSON mit weiteren Nutzerdaten kann bei Bedarf im Antwortrumpf eingefügt werden. Die übermittelten Daten werden in einen JWT > partner_data-Parameter geschrieben.
    • Sonstige HTTP-Statuscodes bei erfolglosen Anfragen.

Info: Wenn ein JWT die Benutzer-ID aus Ihrer Datenbank enthalten soll, wenden Sie sich bitte an Ihren Account Manager.

Validierung der Anfragen vom Xsolla-Login-Server

Anfragen des Xsolla-Login-Servers werden mittels Header Authorization: Bearer <JWT> an Ihre URLs gesendet. Der JWT wird mit dem geheimen Schlüssel Ihres Projekts unterzeichnet.

So validieren Sie den JWT:

  1. Kopieren Sie den Wert des geheimen Schlüssels (Kundenportal > Login-Projekte > Allgemeine Einstellungen > Geheimer Schlüssel).
  2. Wählen Sie eine Bibliothek/Library aus und übermitteln Sie den Wert des geheimen Schlüssels an die Validierungsfunktion.
  3. Dekodieren Sie bei erfolgreicher Validierung den JWT und stellen Sie sicher, dass er die Claims aus folgender Tabelle beinhaltet. Finden und verwenden Sie eine Bibliothek/Library zum Dekodieren.

ClaimTypBeschreibung
expUnix TimestampDas Verfallsdatum und die Verfallsuhrzeit des JWT. Die JWT-Lebensspanne beträgt 7 Minuten.
iatUnix TimestampDas Ausgabedatum und die Ausgabeuhrzeit des JWT.
issstringDer Dienst, der das JWT unterzeichnet hat https://login.xsolla.com.
request_typestringKonstant: gateway_request.
xsolla_login_project_idstring (UUID)Die ID Ihres Login-Projekts im Kundenportal.

Beispiel einer Token-Payload:

{
  "exp": 1573635020,
  "iat": 1573634600,
  "iss": "https://login.xsolla.com",
  "request_type": "gateway_request",
  "xsolla_login_project_id": "00000000-0000-0000-0000-000000000000"
}