Key | Value |
---|---|
Version | 0.1.0 |
Source | https://github.com/VNG-Realisatie/token-issuer |
Keywords | ZGW, tooling |
Related | https://github.com/VNG-Realisatie/token-seeder |
Om het zaakgericht werken in de Common Ground architectuuur te ondersteunen zijn de API's voor Zaakgericht werken ontwikkeld. Onderdeel van deze API's is een autorisatie module, de Autorisaties API welke tokens gebruikt. Deze tokens dienen genereerd en ingericht te worden in de verschillende API's.
Om de problemen met de bestaande tokentool op te lossen en deze bijvoorbeeld ook op de (nieuwe) testomgeving te laten werken is een nieuwe tokentool ontwikkeld. Bijkomend voordeel is dat de nieuwe tokentool nu ook binnen onze eigen omgeving draait.
Deze implementatie heeft de GUI achterwege gelaten en werkt nu als een pure restapi. Hierdoor is het aantal endpoints (en werking) sterk gedaald.
Bij de token-issuer is om de werking te vereenvoudigen swagger en redoc documentatie toegevoegd. Deze worden op het standaardadres geserveerd (zie onder).
{BASE_ADDRESS}
dient vervangen te worden door de instelling van je ingress
met een port-forward is het meestal http://localhost:8000
.
Alternatief kan het een dsn record zijn met https://
zoals https://zaken-auth.test.vng.cloud
.
{BASE_ADDRESS}/docs
{BASE_ADDRESS}/redoc
{BASE_ADDRESS}/api/v1/openapi.json
Alvorens de commando's lokaal te draaien is het belangrijk te bepalen van welke omgeving je een token nodig hebt.
De urls ondersteund door team referentie implementaties zijn:
- test:
https://zaken-auth.test.vng.cloud
- productie:
https://zaken-auth.vng.cloud
Wanneer je de token-issuer lokaal draait (bijvoorbeeld in minikube) kan dat een localhost
zijn maar ook een ingress
adres zoals beschreven bij Swagger en Redoc.
Je kunt eenvoudig het {BASE_ADDRESS}
vervangen met de volgende commando's
Test:
export BASE_ADDRESS=https://zaken-auth.test.vng.cloud
Productie:
export BASE_ADDRESS=https://zaken-auth.vng.cloud
Onderstaande commando's kunnen ook geplakt worden in API tooling zoals postman of insomnia.
curl -L --request POST \
--url $BASE_ADDRESS/api/v1/register \
--header 'Content-Type: application/json' \
--data '{
"clientIds": [
"allthescopesarebelongtous222223132532"
],
"label": "user",
"heeftAlleAutorisaties": true,
"autorisaties": []
}'
curl -L --request POST \
--url $BASE_ADDRESS/api/v1/register \
--header 'Content-Type: application/json' \
--data '{
"clientIds": [
"allthescopesarebelongtous222223132532"
],
"label": "user",
"heeftAlleAutorisaties": false,
"autorisaties": [
{
"component": "zrc",
"componentWeergave": "Zaken API",
"scopes": [
"audittrails.lezen",
"zaken.aanmaken",
"zaken.lezen",
"zaken.verwijderen"
],
"zaaktype": "https://catalogi-api.test.vng.cloud/api/v1/zaaktypen/4f7e14f9-395b-48f2-933c-9fb776b4cdad",
"maxVertrouwelijkheidaanduiding": "zeer_geheim"
}
]
}
curl -L --request POST \
--url $BASE_ADDRESS/api/v1/tokens \
--header 'Content-Type: application/json' \
--data '{
"client_id": ["sometestwithatoken-I0xPKpr8y0Jx"],
"secret": "HbQLEs7R6ExBGF66U0e4cSO8YfXAXGOS"
}'
Er is een aantal variabelen die te zetten zijn om de werking te bepalen.
Key | Example | Description |
---|---|---|
ENV | kubernetes | Variabele die bepaalt welke configuratie uit het INI bestand wordt gelezen |
TOKEN_ISSUER_NAME | token-issuer-test | Variabele die in elke api gezet gaat worden als clientId |
TOKEN_ISSUER_SECRET | supersecretsecret | Variabele voor de validatie van de TOKEN_ISSUER_NAME |
ALLOWED_HOSTS | 'k8s-tokens-local.test,localhost,tokens' | Variabelen die bepalen welke hosts toegestaan worden |
Zoals voorheen via de GUI gebeurde kunnen er ook tokens aangemaakt worden met specifieke scopes. Deze lijst geeft een overzicht. Het is echter de verantwoording van de consumer om de juiste scopes te gebruiken.
{
"autorisaties": [
{
"component": "ac",
"componentWeergave": "Autorisaties API",
"scopes": [
"autorisaties.bijwerken",
"autorisaties.lezen"
]
},
{
"component": "zrc",
"componentWeergave": "Zaken API",
"scopes": [
"audittrails.lezen",
"zaken.aanmaken",
"zaken.bijwerken",
"zaken.geforceerd-bijwerken",
"zaken.heropenen",
"zaken.lezen",
"zaken.statussen.toevoegen",
"zaken.verwijderen"
],
"zaaktype": "https://catalogi-api.test.vng.cloud/api/v1/zaaktypen/4f7e14f9-395b-48f2-933c-9fb776b4cdad",
"maxVertrouwelijkheidaanduiding": "zeer_geheim"
},
{
"component": "ztc",
"componentWeergave": "Catalogi API",
"scopes": [
"audittrails.lezen",
"zaken.aanmaken",
"zaken.bijwerken",
"zaken.geforceerd-bijwerken",
"zaken.heropenen",
"zaken.lezen",
"zaken.statussen.toevoegen",
"zaken.verwijderen"
]
},
{
"component": "drc",
"componentWeergave": "Documenten API",
"scopes": [
"audittrails.lezen",
"documenten.aanmaken",
"documenten.bijwerken",
"documenten.geforceerd-bijwerken",
"documenten.geforceerd-unlock",
"documenten.lezen",
"documenten.lock",
"documenten.verwijderen",
"zaken.aanmaken",
"zaken.bijwerken",
"zaken.geforceerd-bijwerken",
"zaken.heropenen",
"zaken.lezen",
"zaken.statussen.toevoegen",
"zaken.verwijderen"
],
"informatieobjecttype": "https://catalogi-api.test.vng.cloud/api/v1/informatieobjecttypen/b3f7c9d7-19e9-46d5-83ca-b13d544ec138",
"maxVertrouwelijkheidaanduiding": "zeer_geheim"
},
{
"component": "drc",
"componentWeergave": "Documenten API",
"scopes": [
"audittrails.lezen",
"documenten.aanmaken",
"documenten.bijwerken",
"documenten.geforceerd-bijwerken",
"documenten.geforceerd-unlock",
"documenten.lezen",
"documenten.lock",
"documenten.verwijderen",
"zaken.aanmaken",
"zaken.bijwerken",
"zaken.geforceerd-bijwerken",
"zaken.heropenen",
"zaken.lezen",
"zaken.statussen.toevoegen",
"zaken.verwijderen"
],
"informatieobjecttype": "https://catalogi-api.test.vng.cloud/api/v1/informatieobjecttypen/10f4a641-61a0-4e9c-8959-9bc1dcafd12d",
"maxVertrouwelijkheidaanduiding": "zeer_geheim"
}
]
}
- Rapporteer issues bij vragen, fouten of wensen.
Copyright © VNG Realisatie 2023 -
Licensed under the EUPL