Direkt zum Hauptinhalt

Ein Zugriffstoken abrufen

Ziel​

Rufen Sie ein OAuth2-Zugriffstoken vom Parsware Identity Service ab, damit Sie während der Entwicklung Plattform-APIs aufrufen können.

Voraussetzungen​

  • Der Identity Service läuft und ist erreichbar (in der lokalen Entwicklung lauscht er auf http://localhost:5000).
  • Die Seed-Daten für die Entwicklung wurden angelegt (das geschieht beim ersten Start automatisch): ein Entwicklungsmandant und ein Administratorkonto (admin@parsware.local).
  • Ein REST-Client wie curl.

Schritte​

  1. Fordern Sie am Token-Endpunkt ein Token an – mit dem Entwicklungsclient und den Anmeldeinformationen des angelegten Administrators:

    curl -X POST http://localhost:5000/connect/token \
    -H "Content-Type: application/x-www-form-urlencoded" \
    -d "grant_type=password" \
    -d "username=admin@parsware.local" \
    -d "password=Passw0rd!" \
    -d "scope=profile roles parsware.api offline_access" \
    -d "client_id=parsware-dev-cli" \
    -d "client_secret=dev-cli-secret"
  2. Lesen Sie das access_token aus der JSON-Antwort. Die Antwort enthält außerdem ein refresh_token (weil offline_access angefordert wurde) und einen Wert expires_in in Sekunden.

  3. Rufen Sie eine API mit dem Token im Header Authorization auf. Um zu bestätigen, dass das Token funktioniert, rufen Sie den userinfo-Endpunkt auf:

    curl http://localhost:5000/connect/userinfo \
    -H "Authorization: Bearer <access_token>"

    Die Antwort identifiziert den angemeldeten Benutzer (Subject, Name, E-Mail, Mandant).

Was im Hintergrund passiert​

Der Identity Service prüft das Kennwort des Administrators und stellt dann ein signiertes JWT-Zugriffstoken aus. Das Token ist signiert (nicht verschlüsselt), sodass jeder Plattformdienst es direkt anhand der veröffentlichten Signaturschlüssel des Identity Service validiert – es gibt keinen Rückruf beim Identity Service für jede Anfrage.

Fehlerbehebung​

  • invalid_grant – Benutzername oder Kennwort ist falsch, oder das Konto wurde nach wiederholten Fehlversuchen gesperrt. Warten Sie und versuchen Sie es erneut, oder setzen Sie das Kennwort zurück.
  • invalid_client – client_id/client_secret passen zu keinem registrierten Client. Verwenden Sie in der Entwicklung parsware-dev-cli / dev-cli-secret.
  • invalid_scope – ein angeforderter Scope ist für den Client nicht zulässig. Fordern Sie nur profile, roles, offline_access und parsware.api an.
  • Verbindung abgelehnt – der Identity Service läuft nicht oder verwendet einen anderen Port.
  • Das Token enthält nur mfa.enrol (sein aud ist parsware-mfa-enrolment) – das Konto ist ein Mitarbeiterkonto, für das noch keine Authentifizierungs-App eingerichtet ist. MFA ist für Mitarbeiter verpflichtend: Richten Sie eine ein (über das Profil oder mit POST /connect/mfa/enrolment und diesem Token) und fordern Sie dann erneut an, mit -d "mfa_code=<the six digits>". In einer Bereitstellung ist der Administrator die Person, die in PLATFORM_ADMIN_EMAIL der Bereitstellung angegeben ist, nicht admin@parsware.local.

Verwandte Szenarien​

  • Die JWKS-Schlüssel prüfen, die der Identity Service veröffentlicht.

Der hier gezeigte Password-Grant ist eine Erleichterung für die Entwicklung, um ein Token über die Befehlszeile abzurufen. Die echte interaktive Anmeldung verwendet den Authorization-Code-Flow mit PKCE über die Plattform-Shell.