.. _manual_api_auth:
==================
API-toegang beheer
==================
Open Zaak biedt API's aan voor zaakgericht werken. Deze API's zijn niet toegankelijk
zonder authenticatie en autorisatie - gegevens worden namelijk correct beveiligd.
Eindgebruikers maken gebruik van (taak)applicaties, en het zijn deze applicaties die
gebruik maken van de API's voor zaakgericht werken.
Voordat een applicatie dus gegevens kan opvragen, opvoeren, bewerken of vernietigen,
moet deze applicatie hiervoor bekend zijn en geautoriseerd zijn.
Elke applicatie die aangesloten wordt op Open Zaak krijgt authenticatiegegevens.
Tegelijkertijd worden autorisaties ingesteld per applicatie. Autorisatiebeheerders
dienen vervolgens de applicatie-authenticatiegegevens te communiceren naar de
beheerder(s) van de (taak)applicatie.
.. warning::
De applicaties/authenticatiegegevens die hier beheerd worden, zijn **niet**
geschikt voor eindgebruikers, maar enkel voor server-to-server communicatie.
.. note:: Om API-toegang te kunnen beheren moet je tot de **API admin**
groep behoren of equivalente permissies hebben. Zie
:ref:`manual_users_groups` voor groepenbeheer.
.. _manual_api_auth_applicaties:
Een Applicatie registreren
==========================
Klik op het dashboard onder de groep **API Autorisaties** op de link **Toevoegen**
naast de kop **Applicaties**:
.. image:: assets/dashboard_add_application.png
:width: 100%
:alt: Dashboard voeg applicatie toe
Vul vervolgens het formulier in:
.. image:: assets/create_application.png
:width: 100%
:alt: Applicatieformulier
Het **label** is een vriendelijke naam voor de applicatie waarmee je kan herkennen om
welke applicatie binnen je organisatie het gaat. Je kan dit vrij kiezen.
Het vinkje **Heeft alle autorisaties** laat je toe om snel een applicatie alle mogelijke
rechten te geven. Merk op dat dit bijna altijd betekent dat een applicatie meer mag dan
nodig is!
Zorg ervoor dat je minstens één combinatie van *Client ID* en *Secret*
`genereert `_. De applicatie heeft deze gegevens nodig
om tokens te kunnen genereren - communiceer deze dus op een veilige manier naar de
beheerder van de (taak)applicatie.
Klik tot slot op **Opslaan en opnieuw bewerken**, waarna je de
:ref:`autorisaties in kan stellen `.
.. _manual_api_app_auth:
Instellen van de API-toegang voor een Applicatie
================================================
Je kan de applicatie waarvan je autorisaties wenst in te stellen bereiken via het
:ref:`lijstoverzicht ` of vlak na het
:ref:`registreren ` van een nieuwe applicatie.
Klik rechtsonderin op **Beheer autorisaties** om de autorisaties van een applicatie
in te stellen.
.. image:: assets/detail_application.png
:width: 100%
:alt: Detailweergave applicatie
Autorisaties zijn van toepassing op een bepaalde API-component. Eén applicatie kan
zonder problemen autorisaties hebben op een set van componenten.
Componentkeuze
--------------
Kies in de eerste stap voor welke **component** je autorisaties wil instellen:
.. image:: assets/auth_app_pick_component.png
:width: 100%
:alt: Kies component
Afhankelijk van de keuze van de component gebeuren nu een aantal dingen:
* de relevante *scopes* worden nu getoond
* eventuele extra keuzeparameters zijn beschikbaar
.. image:: assets/auth_app_component_selected.png
:width: 100%
:alt: Component geselecteerd
Keuze scopes
------------
*Scopes* bepalen welke acties een applicatie via de API kan uitvoeren. Het is een
groepering van rechten.
Typisch zal een leverancier van de applicatie je vertellen welke scopes er precies nodig
zijn. Selecteer de relevante scopes door de checkboxes aan te vinken.
Keuze relevante typen
---------------------
Voor de *Zaken API*, *Documenten API* en *Besluiten API* worden de autorisaties
ingericht per *type* - Zaaktype, Informatieobjecttype en Besluittype respectievelijk.
De type-selectie heeft twee mogelijke opties:
Selecteer handmatig:
Bij handmatige selectie worden alle \*typen per catalogus opgelijst. Kies de relevante
\*typen aan door het vinkje aan te zetten.
Selecteer catalogus:
Bij catalogus selectie worden alle catalogi opgelijst. Als er één of meerdere catalogi
geselecteerd zijn, heeft deze Autorisatie betrekking op alle \*typen binnen die catalogi
(afhankelijk van het geselecteerde component). Dit betekent dat deze Autorisatie dus ook
geldig is voor \*typen die later aan deze catalogi toegevoegd worden.
.. warning::
Let op: autorisaties op catalogus-niveau zijn **niet** onderdeel van de Autorisaties API
standaard, het is een mechanisme in Open Zaak om het instellen van autorisaties te versimpelen.
Dit betekent dat het aanpassen van de ``Autorisaties`` van een ``Applicatie`` op API niveau (door middel van een PUT/PATCH request)
ervoor zorgt dat via de admin ingestelde autorisaties op catalogus-niveau verwijderd worden, om conflicten te voorkomen.
.. image:: assets/auth_app_select_types.png
:width: 100%
:alt: Geselecteerde relevante typen
Keuze vertrouwelijkheidaanduiding
---------------------------------
Tot slot kan je limiteren tot welke vertrouwelijkheidaanduiding een applicatie toegang
heeft. Documenten en Zaken worden aangemaakt met een bepaalde
vertrouwelijkheidaanduiding. Een applicatie heeft enkel toegang tot deze documenten en
zaken waarvan de vertrouwelijkheidaanduiding meer publiek of gelijk-aan de ingestelde
autorisatie-vertrouwelijkheidaanduiding is.
Voor de applicatie lijkt het alsof Documenten en Zaken die *meer* vertrouwelijk zijn
niet bestaan.
.. note::
Merk op dat de ingestelde vertrouwelijkheidaanduiding van toepassing is op de
geselecteerde zaaktypen of informatieobjecttypen. Je kan dus een verschillende
maximale vertrouwelijkheidaanduiding instellen per zaaktype of informatieobjecttype.
Toevoegen extra autorisaties
----------------------------
Linksonderin vind je een link **Nog Autorisaties toevoegen**. Zodra je hierop klikt, ga
je opnieuw door hetzelfde proces om een autorisatie in te stellen. Je kan zoveel
autorisaties instellen als je wenst.
.. warning::
Let op dat je geen conflicterende autorisaties instelt. Eenmaal een autorisatie voor
(een groep van) zaaktypen, informatieobjecttypen of besluittypen is ingesteld mag je
**geen extra** autorisaties voor diezelfde (groep van) zaaktypen,
informatieobjecttypen of besluittypen meer instellen.
Opslaan wijzigingen
-------------------
Wanneer je klaar bent, vergeet dan niet om rechtsonderin op **Opslaan** te klikken om
de autorisaties te bewaren.