Skip to content

Repository files navigation

W4U API-testclient

Testtool om access tokens op te halen bij de autorisatieserver en daarmee de beveiligde W4U API-endpoints te testen. Er zijn twee manieren om te testen — allebei gebruiken ze dezelfde onderliggende .NET-client:

  • PowerShell: test-api.ps1 — haalt een token op en draait automatisch vier API-tests.
  • GUI: run-gui.ps1 — browser-interface om tokens op te halen, claims te bekijken en de API-tests één voor één uit te voeren.

Hoe het werkt

+--------------+   1. authenticatie (signed JWT)    +--------------------+
|  Testclient  | ---------------------------------> |  Autorisatieserver |
|  (PS1 / GUI) | <--------------------------------- |                    |
+--------------+   2. access token                  +--------------------+
       |
       |   3. API-call met "Authorization: Bearer <access token>"
       v
+--------------+
| API-endpoint |
+--------------+

In gateway-modus zit tussen stap 2 en 3 een extra stap: de testclient wisselt zijn eigen token bij de autorisatieserver om (token-exchange, RFC 8693) voor een token dat gericht is op een specifieke achterliggende API-client, en roept daarmee het API-endpoint aan.

Randvoorwaarden

  1. Netwerktoegang: alleen via het klanten-WAN. De autorisatieserver en de API-endpoints zijn niet via internet bereikbaar.
  2. .NET 10 SDK of hoger (dotnet --version).
  3. PowerShell 7+ voor de scripts (pwsh).
  4. Een gekloonde repository met daarin:
    • config.json in de repository-root (meegeleverd, met nonprod-waarden);
    • het private-key-bestand (.pem) waarnaar config.json verwijst (meegeleverd voor nonprod).

Eenmalig na het klonen:

dotnet restore ./w4u-api-test-client.sln

Testen met PowerShell

Alles vanuit de repository-root:

# Standalone: vraagt interactief met welke client-identiteit je wilt testen
.\test-api.ps1

# Standalone als een specifieke benoemde client (geen prompt)
.\test-api.ps1 -Client <client-id>

# Standalone zonder prompt, gewoon de standaard-identiteit uit config.json
.\test-api.ps1 -NoPrompt

# Gateway-modus (token-exchange); de API-client wordt automatisch gekozen
# als er precies één geconfigureerd staat, anders geef je hem expliciet op
.\test-api.ps1 -Gateway
.\test-api.ps1 -Gateway -ApiClient <api-client-id>

Het script haalt een token op en draait daarna vier tests tegen de API: een publieke health check, een zoekactie, en twee gegevens-opvragingen met verschillende vereiste rollen. Handige extra parameters: -Bsn, -Pseudonummer, -BaseUrl, -ConfigPath.

Testen met de GUI

.\run-gui.ps1

Dit start de GUI en opent de browser op http://localhost:5273. Daarna wijzen de vier secties zich vanzelf:

  1. Configuratie — laad (en bewerk desgewenst) config.json.
  2. Modus — kies standalone (met een keuzerondje per client-identiteit) of gateway-modus (vink één of meer API-clients aan) en klik Token ophalen.
  3. Resultaat — toont per token het validatieresultaat, de gedecodeerde claims en de ruwe JWT (met kopieerknop).
  4. API-endpoints testen — voer de vier API-tests één voor één uit met het gekozen token; bij gateway-modus is dat standaard het uitgewisselde token.

Resultaten interpreteren

Resultaat Betekenis
200 OK Aanroep geslaagd; de client heeft de vereiste rollen
401 Unauthorized Token ongeldig of verlopen — haal een nieuw token op
403 Forbidden Token geldig, maar de client mist de vereiste rol — verwacht gedrag bij het testen van autorisatie
404 Not Found Token en rollen in orde, maar de testdata bestaat niet in de backend

Beveiliging

Deze repository bevat bewust een nonprod-testsleutel en nonprod-configuratie voor het compleet kunnen testen van de authenticatie flows.

About

Test client om OAuth flows te testen

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages