Anonyme Sessions
Übersicht
Anonyme Sessions ermöglichen es, temporäre Benutzersitzungen zu erstellen, ohne dass eine Registrierung oder Anmeldung erforderlich ist. Diese Art von Sitzung ist nützlich für Anwendungen, die eine Benutzererfahrung ohne sofortige Registrierung bieten möchten.
Verwendung
Zuerst muss sich der Client einmalig bei der Authority über den Client Credentials Flow anmelden. Dies geschieht über den API-Endpunkt /token, welcher für die Anmeldung einen Token generiert und zurückgibt.
Dabei muss angegeben werden, dass für den anfragenden Client der Scope anonymous_session mit einbezogen werden soll.
Siehe: Authority Client Konfiguration.
Aufruf des API-Endpunkts /token zum erhalt des Tokens für die Anmeldung des Clients bei der Authority:
const response = await fetch('http://authority:11560/token', {
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
},
body: new URLSearchParams({
grant_type: 'client_credentials',
client_id: 'your_client_id',
client_secret: 'your_client_secret',
scope: 'anonymous_session',
}),
});
const data = await response.json();
console.log(data.access_token);Oder mit CURL:
curl -X POST http://authority:11560/token \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "grant_type=client_credentials" \
-d "client_id=your_client_id" \
-d "client_secret=your_client_secret" \
-d "scope=anonymous_session"Response nach Aufruf der Route:
{
"access_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...",
"token_type": "Bearer",
"expires_in": 3600
}Inhalt eines Beispiel Tokens:
{
"sub": "your_client_id",
"iat": 1516239022,
"exp": 1516242622,
"scope": "anonymous_session",
"iss": "http://authority:11560"
}Ist der Client angemeldet, kann dieser nun für beliebig viele Nutzer anonyme Sessions erstellen.
Um eine anonyme Sitzung zu erstellen, wird der API-Endpunkt /create-anonymous-session bereitgestellt, der einen neuen Sitzungstoken generiert.
Aufruf des API-Endpunkts /create-anonymous-session zum erhalt des Tokens für die anonyme Session:
const response = await fetch('http://authority:11560/create-anonymous-session', {
method: 'POST',
headers: {
'Authorization': `Bearer ${accessToken}`,
'Content-Type': 'application/json',
},
});
const data = await response.json();
console.log(data.access_token);Oder mit Curl:
curl -X POST http://authority:11560/create-anonymous-session \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json"Response nach Aufruf der Route:
{
"access_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...",
"token_type": "Bearer",
"expires_in": 3600
}Inhalt eines Beispiel Tokens:
{
"sub": "anonymous_user_abc123",
"iat": 1516239022,
"exp": 1516242622,
"scope": "engine_read engine_write",
"session_id": "session_xyz789",
"iss": "http://authority:11560"
}Dieser Token enthält die Informationen zur Sitzung und wird für die Dauer der anonymousSessionTTL gültig sein.
Ablauf
- Autorisierung: Der Endpunkt erwartet einen Authorization-Header mit einem Bearer-Token. Wenn kein Token bereitgestellt wird, antwortet der Server mit 403 Forbidden.
- Der im Token konfigurierte Client muss den Claim
can_create_anonymous_sessionbesitzen, welcher im Scopeanonymous_sessionenthalten ist.
- Der im Token konfigurierte Client muss den Claim
- Erstellen der Sitzung: Es wird ein neuer Token für eine Anonyme Session erstellt, inkl. einer temporären userId und sessionId.
- Rückgabe des Tokens: Der neue Token wird verschlüsselt und an den Client zurückgegeben.