Schütze deine API
Wenn du keine flexiblen, feingranularen Zugangskontrollrichtlinien benötigst, kannst du einfach deine API direkt schützen. Wir führen dich durch ein Sequenzdiagramm und die notwendigen Schritte, um die Zugangskontrolle in deine App zu integrieren.
In diesem Tutorial
- Logto-Endpunkt:
https://tenant-id.logto.app
- Client-Anwendung:
https://client.example.org
- API-Ressourcenserver:
https://resource-server.com/api
Du solltest diese durch deine tatsächlichen Endpunkte ersetzen, wenn du implementierst.
Authentifizierungsanfrage
Gib eine Liste von Ressourcenindikator-Parametern in einer Authentifizierungsanfrage an. Dies wird alle geschützten Ressourcen anzeigen, die der Benutzer möglicherweise anfordert.
GET https://tenant-id.logto.app/oidc/auth?response_type=code
&client_id=s6BhdRkqt3
&state=tNwzQ87pC6llebpmac_IDeeq-mCR2wLDYljHUZUAWuI
&redirect_uri=https%3A%2F%2Fclient.example.org%2Fcb
&resource=https%3A%2F%2Fresource-server.com%2Fapi
&scope=read%20write
Logto wird diese Ressourcenindikatoren validieren und speichern. Ein authorization_code
wird gewährt und mit Berechtigungen zurückgegeben, die auf diese angegebenen Ressourcen beschränkt sind.
Beispielkonfiguration des Logto SDK:
const config: LogtoConfig = {
// ...andere Konfigurationen
resources: ['https://resource-server.com/api'],
scopes: ['read', 'write'],
};
Token-Anfrage
Wenn der Ressourcenparameter in einer Token-Anfrage zusammen mit dem oben gewährten authorization_code
vorhanden ist, wird die Ziel-API-Ressourcenzielgruppe des Zugangstokens angegeben.
POST https://tenant-id.logto.app/oidc/token HTTP/1.1
Content-Type: application/x-www-form-urlencoded
grant_type=authorization_code&redirect_uri=https%3A%2F%2Fclient.example.org%2Fcb&code=10esc29BWC2qZB0acc9v8zAv9ltc2pko105tQauZ&resource=https%3A%2F%2Fresource-server.com%2Fapi
Ein verschlüsseltes Zugangstoken mit der Zielgruppe, die auf diese angeforderte Ressource beschränkt ist, wird von Logto gewährt. Das Token enthält alle Daten, die du benötigst, um den Autorisierungsstatus der Anfrage darzustellen. Zum Beispiel die Identität und Rolle des anfragenden Benutzers, die Zielgruppe und die Ablaufzeit des Tokens.
Beispielcode des Logto SDK:
const accessToken = await logtoClient.getAccessToken('https://resource-server.com/api');
Der Payload des accessToken wird enthalten:
{
iss: '<your-logto-endpoint>/oidc',
aud: 'https://resource-server.com/api',
scope: 'read write'
}
Anfrage an die API-Ressource
Der Client-Benutzer sendet eine Anfrage an die API-Ressource, indem er das gegebene access_token
im Authorization-Header präsentiert.
GET https://resource-server.com/api/users
Authorization: Bearer eyJhbGciOiJIUz...
Logto folgt dem standardmäßigen tokenbasierten Autorisierungsprotokoll, um deine API-Ressourcen zu schützen. Um mehr über OAuth 2.0 zu erfahren, siehe bitte das offizielle Dokument von OAuth 2.0.
Autorisierungstokens für API-Anfragen validieren
Logto stellt ein standardmäßiges JWT Format Autorisierungstoken für jede autorisierte API-Anfrage aus. Das Token ist verschlüsselt und als JWS Token signiert.
Verständnis des JWS-Tokens
Ein kodiertes JWS Token wird aus drei Teilen konstruiert:
- JOSE Header: Deklariert den Code-Typ und den Kodierungsalgorithmus
- JWS Payload: Enthält alle Ansprüche des Tokens
- JWS Signatur: Signatur, die mit JWK signiert ist
Ein standardmäßiges Schema des von Logto ausgestellten JWS Payload: (Ansprüche können variieren, basierend auf deiner benutzerdefinierten OIDC-Konfiguration)
Schlüssel | Beschreibung |
---|---|
jti | eindeutige JWT-ID |
sub | Subjekt, normalerweise Benutzer-ID |
iat | Zeitstempel, wann das Token ausgestellt wurde |
exp | Zeitstempel, wann das Token abläuft |
client_id | Anwendungs-ID |
iss | Identität des Token-Ausstellers |
aud | Zielgruppe des Tokens |
scope | Berechtigungen des Tokens |
Für die Entwicklung, um ein JWT-Token visuell zu inspizieren, könntest du jwt.io besuchen, um die erhaltenen Tokens zu dekodieren und zu überprüfen. Sei vorsichtig oder verwende niemals Tokens aus einer Produktionsumgebung. Da dies ein von Dritten bereitgestellter öffentlicher Online-Dienst ist, könnte dein Token exponiert werden.
Das Autorisierungstoken validieren
- Ein JWT validieren
- Die JWS-Signatur validieren
- Der Aussteller des Tokens ist
https://<your-logto-domain>/oidc
(ausgestellt von deinem Logto-Auth-Server) - Die Zielgruppe des Tokens entspricht dem aktuellen Ressourcenindikator des Empfängers, der in der Logto Admin Console registriert ist
- Das Token befindet sich innerhalb seiner Ablaufzeit
- (RBAC nur) Das Token hat die gewünschte
scope
Es gibt verschiedene Open-Source-Bibliotheken und -Pakete, die dir helfen können, ein JWT-Token einfach zu validieren und zu dekodieren. Du kannst eine auswählen und in deine Backend-Anwendung integrieren, basierend auf der Sprache und dem Framework, das du verwendest. Bitte überprüfe einige der Beispiele, die wir haben:
Referenz
Logto verwendet das codebasierte OAuth 2.0 Autorisierungsprotokoll, um deine API-Anfrage sicher zu machen. Wenn du an der dahinterstehenden Strategie interessiert bist, sieh dir die Spezifikation von OAuth 2.0 für weitere Details an.