Persönlicher Zugriffstoken
Persönliche Zugriffstokens (PATs) bieten eine sichere Möglichkeit für Benutzer, einen Zugangstoken (Access token) zu gewähren, ohne ihre Zugangsdaten und eine interaktive Anmeldung zu verwenden. Dies ist nützlich für CI / CD, Skripte oder Anwendungen, die programmatisch auf Ressourcen zugreifen müssen.
Verwaltung persönlicher Zugriffstokens
Über die Konsole
Du kannst persönliche Zugriffstokens auf der Seite Benutzerdetails der Konsole > Benutzerverwaltung verwalten. In der Karte "Authentifizierung (Authentication)" siehst du die Liste der persönlichen Zugriffstokens und kannst neue erstellen.
Über die Management API
Nachdem du die Management API eingerichtet hast, kannst du die API-Endpunkte verwenden, um persönliche Zugriffstokens zu erstellen, aufzulisten und zu löschen.
PATs verwenden, um Zugangstokens zu gewähren
Nachdem du ein PAT erstellt hast, kannst du es verwenden, um Zugangstokens für deine Anwendung über den Token-Exchange-Endpunkt zu gewähren.
Mit PATs erhaltene Zugangstokens funktionieren identisch wie Tokens, die über den Standard-refresh_token-Flow erhalten wurden. Das bedeutet:
- Organisationskontext: Mit PAT erhaltene Tokens unterstützen die gleichen Organisationsberechtigungen und Berechtigungen (Scopes) wie Refresh-Token-Flows
- Autorisierungs-Flow: Du kannst PAT-getauschte Zugangstokens für Organisationsberechtigungen und organisationsbezogene API-Ressourcen verwenden
- Token-Validierung: Die gleiche Validierungslogik gilt – nur der initiale Grant-Typ unterscheidet sich
Wenn du mit Organisationen arbeitest, sind die Zugriffsmuster und Berechtigungen gleich, unabhängig davon, ob du PAT oder Refresh-Tokens verwendest.
Anfrage
Bevor du den Token-Austausch-Grant verwenden kannst, musst du ihn für deine Anwendung aktivieren:
- Gehe zu Konsole > Anwendungen und wähle deine Anwendung aus.
- Suche in den Anwendungseinstellungen den Abschnitt „Token-Austausch“.
- Aktiviere den Schalter „Token-Austausch erlauben“.
Der Token-Austausch ist aus Sicherheitsgründen standardmäßig deaktiviert. Wenn du ihn nicht aktivierst, erhältst du einen Fehler „Token-Austausch ist für diese Anwendung nicht erlaubt“.
Die Anwendung stellt eine Token-Exchange-Anfrage an den Token-Endpunkt des Tenants mit einem speziellen Grant-Typ über die HTTP-POST-Methode. Die folgenden Parameter werden im HTTP-Request-Entity-Body im Format application/x-www-form-urlencoded übergeben.
client_id: ERFORDERLICH. Die Client-ID der Anwendung.grant_type: ERFORDERLICH. Der Wert dieses Parameters mussurn:ietf:params:oauth:grant-type:token-exchangesein und zeigt an, dass ein Token-Austausch durchgeführt wird.resource: OPTIONAL. Der Ressourcenindikator, wie bei anderen Token-Anfragen.scope: OPTIONAL. Die angeforderten Berechtigungen (Scopes), wie bei anderen Token-Anfragen.subject_token: ERFORDERLICH. Das PAT des Benutzers.subject_token_type: ERFORDERLICH. Der Typ des im Parametersubject_tokenbereitgestellten Sicherheitstokens. Der Wert dieses Parameters mussurn:logto:token-type:personal_access_tokensein.
Antwort
Wenn die Token-Exchange-Anfrage erfolgreich ist, gibt der Token-Endpunkt des Tenants einen Zugangstoken zurück, der die Identität des Benutzers repräsentiert. Die Antwort enthält die folgenden Parameter im HTTP-Response-Entity-Body im Format application/json.
access_token: ERFORDERLICH. Der Zugangstoken des Benutzers, wie bei anderen Token-Anfragen wieauthorization_codeoderrefresh_token.issued_token_type: ERFORDERLICH. Der Typ des ausgegebenen Tokens. Der Wert dieses Parameters mussurn:ietf:params:oauth:token-type:access_tokensein.token_type: ERFORDERLICH. Der Typ des Tokens. Der Wert dieses Parameters mussBearersein.expires_in: ERFORDERLICH. Die Lebensdauer des Zugangstokens in Sekunden.scope: OPTIONAL. Die Berechtigungen (Scopes) des Zugangstokens.
Beispiel für einen Token-Austausch
Für traditionelle Webanwendungen oder Maschine-zu-Maschine-Anwendungen mit App-Secret gib die Zugangsdaten im Authorization-Header mit HTTP-Basic-Authentifizierung an:
POST /oidc/token HTTP/1.1
Host: tenant.logto.app
Content-Type: application/x-www-form-urlencoded
Authorization: Basic <base64(app-id:app-secret)>
grant_type=urn:ietf:params:oauth:grant-type:token-exchange
&resource=http://my-api.com
&scope=read
&subject_token=pat_W51arOqe7nynW75nWhvYogyc
&subject_token_type=urn:logto:token-type:personal_access_token
Für Single-Page-Anwendungen (SPA) oder native Anwendungen ohne App-Secret gib client_id im Request-Body an:
POST /oidc/token HTTP/1.1
Host: tenant.logto.app
Content-Type: application/x-www-form-urlencoded
client_id=your-app-id
&grant_type=urn:ietf:params:oauth:grant-type:token-exchange
&resource=http://my-api.com
&scope=read
&subject_token=pat_W51arOqe7nynW75nWhvYogyc
&subject_token_type=urn:logto:token-type:personal_access_token
Eine erfolgreiche Antwort:
HTTP/1.1 200 OK
Content-Type: application/json
{
"access_token": "eyJhbGci...zg",
"token_type": "Bearer",
"expires_in": 3600,
"scope": "read"
}
Wenn du dann den Zugangstoken mit dem JWT-Decoder dekodierst, erhältst du folgendes Beispiel für einen Zugangstoken-Payload:
{
"jti": "VovNyqJ5_tuYac89eTbpF",
"sub": "rkxl1ops7gs1",
"iat": 1756908403,
"exp": 1756912003,
"scope": "read",
"client_id": "your-app-id",
"iss": "https://tenant-id.logto.app/oidc",
"aud": "http://my-api.com"
}
Verwandte Ressourcen
Was ist ein persönlicher Zugriffstoken? Wann sollte ich persönliche Zugriffstokens verwenden?
Persönliche Zugriffstokens, Maschine-zu-Maschine-Authentifizierung und API-Keys – Definition und ihre Anwendungsfälle in der Praxis