Naar hoofdinhoud gaan

Een toegangstoken verkrijgen

Doel​

Verkrijg een OAuth2-toegangstoken van de Parsware Identity Service, zodat je tijdens het ontwikkelen API's van het platform kunt aanroepen.

Vereisten​

  • De Identity Service draait en is bereikbaar (bij lokale ontwikkeling luistert hij op http://localhost:5000).
  • De seedgegevens voor ontwikkeling zijn aangemaakt (dat gebeurt automatisch bij de eerste start): een ontwikkeltenant en een beheerdersaccount (admin@parsware.local).
  • Een REST-client zoals curl.

Stappen​

  1. Vraag een token aan bij het tokeneindpunt met de ontwikkelclient en de inloggegevens van de geseede beheerder:

    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. Lees de access_token uit het JSON-antwoord. Het antwoord bevat ook een refresh_token (omdat offline_access is aangevraagd) en een waarde expires_in in seconden.

  3. Roep een API aan met het token in de header Authorization. Roep het userinfo-eindpunt aan om te controleren dat het token werkt:

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

    Het antwoord identificeert de aangemelde gebruiker (subject, naam, e-mail, tenant).

Wat er achter de schermen gebeurt​

De Identity Service controleert het wachtwoord van de beheerder en geeft daarna een ondertekend JWT-toegangstoken uit. Het token is ondertekend (niet versleuteld), dus elke platformservice valideert het rechtstreeks met de gepubliceerde ondertekeningssleutels van de Identity Service — er is niet bij elk verzoek een terugkoppeling naar de Identity Service nodig.

Problemen oplossen​

  • invalid_grant — de gebruikersnaam of het wachtwoord klopt niet, of het account is na herhaalde mislukte pogingen geblokkeerd. Wacht en probeer het opnieuw, of stel het wachtwoord opnieuw in.
  • invalid_client — de client_id/client_secret komen niet overeen met een geregistreerde client. Gebruik bij ontwikkeling parsware-dev-cli / dev-cli-secret.
  • invalid_scope — een aangevraagde scope is niet toegestaan voor de client. Vraag alleen profile, roles, offline_access en parsware.api aan.
  • Verbinding geweigerd — de Identity Service draait niet of luistert op een andere poort.
  • Het token bevat alleen mfa.enrol (de aud is parsware-mfa-enrolment) — het account is een medewerkersaccount zonder authenticator-app. MFA is verplicht voor medewerkers: registreer er een (vanuit het profiel, of met POST /connect/mfa/enrolment en dit token) en vraag dan opnieuw aan met -d "mfa_code=<the six digits>". Bij een uitrol is de beheerder degene die PLATFORM_ADMIN_EMAIL van die uitrol noemt, niet admin@parsware.local.

Gerelateerde scenario's​

  • De JWKS-sleutels inspecteren die de Identity Service publiceert.

De password grant die hier wordt getoond, is een gemak voor ontwikkeling om vanaf de opdrachtregel een token te verkrijgen. Echt interactief aanmelden gebruikt de authorization code flow met PKCE via de Platformshell.