Skip to content

Commit

Permalink
Merge pull request #4421 from open-formulieren/feature/4246-capture-a…
Browse files Browse the repository at this point in the history
…uthentication-ctx

Capture authentication context data
  • Loading branch information
sergei-maertens authored Jun 27, 2024
2 parents c267fb6 + 4a9f93d commit e643c92
Show file tree
Hide file tree
Showing 68 changed files with 4,819 additions and 647 deletions.
77 changes: 58 additions & 19 deletions docs/configuration/authentication/oidc_digid.rst
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,33 @@ flow:
3. DigiD stuurt de gebruiker terug naar de OIDC omgeving, die op zijn beurt de gebruiker weer terugstuurt naar Open Formulieren
4. De gebruiker is ingelogd en kan verder met het invullen van het formulier

.. _configuration_oidc_digid_claim_requirements:

Claim-eisen
===========

De OpenID Connect provider moet na een succesvolle login met DigiD een aantal claims
aanbieden aan Open Formulieren. De precieze namen van deze claims kunnen ingesteld
worden in Open Formulieren.

``BSN``
Het BSN van de ingelogde gebruiker. Altijd verplicht.

``betrouwbaarheidsniveau``
Het betrouwbaarheidsniveau gebruikt tijdens het inloggen. Dit wordt vastgelegd en
meegestuurd tijdens het registeren van formulierinzendingen. Als de provider dit
niet kan aanleveren, dan kan je een standaardwaarde instellen in Open Formulieren.

Beheerders kunnen waardenvertalingen inrichten indien de provider de waarden
niet aanlevert zoals gedocumenteerd in de koppelvlakstandaard van Logius.

.. _configuration_oidc_digid_appgroup:

Configureren van OIDC-provider
==============================

Contacteer de IAM beheerders in je organisatie om een *Client* aan te
maken in de omgeving van de OpenID Connect provider.
Contacteer de IAM beheerders in je organisatie om een *Client* aan te maken in de
omgeving van de OpenID Connect provider.

**Redirect URI (vanaf Open Formulieren 2.7.0)**

Expand Down Expand Up @@ -57,28 +77,47 @@ Zorg dat je de volgende :ref:`gegevens <configuration_oidc_digid_appgroup>` hebt
* Client ID
* Client secret

Navigeer vervolgens in de admin naar **Configuratie** > **OpenID Connect configuration for DigiD**.
Navigeer vervolgens in de admin naar **Configuratie** > **DigiD (OIDC)**.

1. Vink *Enable* aan om OIDC in te schakelen.
2. Laat bij **BSN claim name** de standaardwaarde staan, tenzij de naam van het BSN veld
in de OIDC claims anders is dan ``bsn``.
3. Vul bij **OpenID Connect client ID** het Client ID in, bijvoorbeeld
Stel de algemene instellingen in:

1. Vink *Ingeschakeld* aan om OIDC in te schakelen.
2. Vul bij **OpenID Connect client ID** het Client ID in, bijvoorbeeld
``a7d14516-8b20-418f-b34e-25f53c930948``.
4. Vul bij **OpenID Connect secret** het Client secret in, bijvoobeeld
3. Vul bij **OpenID Connect secret** het Client secret in, bijvoobeeld
``97d663a9-3624-4930-90c7-2b90635bd990``.
5. Laat bij **OpenID Connect scopes** de standaardwaarden staan.
6. Vul bij **OpenID sign algorithm** ``RS256`` in.
7. Laat **Sign key** leeg.
4. Laat bij **OpenID Connect scopes** de standaardwaarden staan, of stel deze in volgens
de instructies van je OpenID Connect provider.
5. Vul bij **OpenID sign algorithm** ``RS256`` in.
6. Laat **Sign key** leeg.

Vervolgens moeten er een aantal endpoints van de OIDC provider ingesteld worden,
deze kunnen automatisch bepaald worden aan de hand van het discovery endpoint
Stel dan de claims in:

7. Laat bij **BSN-claim** de standaardwaarde staan, tenzij de naam van het BSN veld
in de OIDC claims anders is dan ``bsn``.
8. Voer bij **betrouwbaarheidsniveau-claim** de naam van de claim in (bijvoorbeeld
``authsp_level``) als die bekend is. Indien niet, kies dan bij
**Standaardbetrouwbaarheidsniveau** de waarde die meest van toepassing is. Dit wordt
enkel gebruikt om vast te leggen met welk betrouwbaarheidsniveau iemand ingelogd is.
9. Indien gewenst, dan kan je waardenvertalingen voor de betrouwbaarheidsniveaus toevoegen,
bijvoorbeeld:

* klik op "Add item"
* Kies "Tekstuele waarde" in de **From** dropdown en voer de waarde ``10`` op in het
tekstveld
* Selecteer "DigiD Basis" in de **To** dropdown
* Herhaal voor andere waarden en niveaus

Vervolgens richt je de endpoints van de OIDC provider in, deze kunnen automatisch
bepaald worden aan de hand van het discovery endpoint
(``https://login.gemeente.nl/auth/realms/{realm}/.well-known/openid-configuration``).

7. Vul bij **Discovery endpoint** het pad naar het juiste authenticatie realm endpoint
van de OpenID Connect provider in (met een `/` op het einde),
meestal is dit ``https://login.gemeente.nl/auth/realms/{realm}/``.
8. Laat de overige endpoints leeg.
10. Vul bij **Discovery endpoint** het pad naar het juiste authenticatie realm endpoint
van de OpenID Connect provider in (met een ``/`` op het einde),
bijvoorbeeld ``https://login.gemeente.nl/auth/realms/{realm}/``.
11. Laat de overige endpoints leeg - deze worden automatisch aangevuld.

Klik tot slot rechtsonder op **Opslaan**.
Klik tot slot linksonder op **Opslaan**.

Nu kan er een formulier aangemaakt worden met het authenticatie backend ``DigiD via OpenID Connect``, zie :ref:`manual_forms_basics`.
Je kan nu een formulier aanmaken met de ``DigiD via OpenID Connect``
authenticatie-plugin, zie :ref:`manual_forms_basics`.
97 changes: 79 additions & 18 deletions docs/configuration/authentication/oidc_eherkenning.rst
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,41 @@ flow:
3. eHerkenning stuurt de gebruiker terug naar de OIDC omgeving, die op zijn beurt de gebruiker weer terugstuurt naar Open Formulieren
4. De gebruiker is ingelogd en kan verder met het invullen van het formulier

.. _configuration_oidc_eherkenning_claim_requirements:

Claim-eisen
===========

De OpenID Connect provider moet na een succesvolle login met DigiD een aantal claims
aanbieden aan Open Formulieren. De precieze namen van deze claims kunnen ingesteld
worden in Open Formulieren.

``name qualifier``
De waarde geeft aan of het bedrijf met RSIN of KVK-nummer inlogt. Indien niet
gegeven, dan gaat Open Formulieren uit van een KVK-nummer.

``legalSubject``
Het KVK-nummer of RSIN van het bedrijf. Altijd verplicht.

``actingSubject``
De (versleutelde) identificatie van de medewerker die inlogt namens het bedrijf.

Verplicht indien ``DIGID_EHERKENNING_OIDC_STRICT`` (:ref:`installation_environment_config`) op ``True`` staat.

``vestigingsNummer``
Identificatie van de/een vestiging van het bedrijf. Nooit verplicht. Indien niet
opgegeven, dan is de aanname dat het de hoofdvestiging betreft.

``betrouwbaarheidsniveau``
Het betrouwbaarheidsniveau gebruikt tijdens het inloggen. Dit wordt vastgelegd en
meegestuurd tijdens het registeren van formulierinzendingen. Als de provider dit
niet kan aanleveren, dan kan je een standaardwaarde instellen in Open Formulieren.

Beheerders kunnen waardenvertalingen inrichten indien de provider de waarden
niet aanlevert zoals gedocumenteerd in de koppelvlakstandaard van Logius.

.. warning:: Open Formulieren ondersteunt op dit moment enkel KVK-nummers en niet RSIN.

.. _configuration_oidc_eherkenning_appgroup:

Configureren van OIDC-provider
Expand Down Expand Up @@ -57,28 +92,54 @@ Zorg dat je de volgende :ref:`gegevens <configuration_oidc_eherkenning_appgroup>
* Client ID
* Client secret

Navigeer vervolgens in de admin naar **Configuratie** > **OpenID Connect configuration for eHerkenning**.
Navigeer vervolgens in de admin naar **Configuratie** > **eHerkenning (OIDC)**.

Stel de algemene instellingen in:

1. Vink *Enable* aan om OIDC in te schakelen.
2. Laat bij **KVK claim name** de standaardwaarde staan, tenzij de naam van het KVK-nummer veld
in de OIDC claims anders is dan ``kvk``.
3. Vul bij **OpenID Connect client ID** het Client ID in, bijvoorbeeld
1. Vink *Ingeschakeld* aan om OIDC in te schakelen.
2. Vul bij **OpenID Connect client ID** het Client ID in, bijvoorbeeld
``a7d14516-8b20-418f-b34e-25f53c930948``.
4. Vul bij **OpenID Connect secret** het Client secret in, bijvoobeeld
3. Vul bij **OpenID Connect secret** het Client secret in, bijvoobeeld
``97d663a9-3624-4930-90c7-2b90635bd990``.
5. Laat bij **OpenID Connect scopes** de standaardwaarden staan.
6. Vul bij **OpenID sign algorithm** ``RS256`` in.
7. Laat **Sign key** leeg.

Vervolgens moeten er een aantal endpoints van de OIDC provider ingesteld worden,
deze kunnen automatisch bepaald worden aan de hand van het discovery endpoint
4. Laat bij **OpenID Connect scopes** de standaardwaarden staan, of stel deze in volgens
de instructies van je OpenID Connect provider.
5. Vul bij **OpenID sign algorithm** ``RS256`` in.
6. Laat **Sign key** leeg.

Stel dan de claims in:

7. Vul bij **Soort identificatie-claim** de claim in die aangeeft of het een KVK-nummer
of RSIN betreft (merk op: op dit moment ondersteunen we enkel KVK). Indien onbekend,
dan kan je de standaardwaarde laten staan.
8. Vul bij **Bedrijfsidenticatie-claim** de claim in die het KVK-nummer (of RSIN,
toekomst) bevat, bijvoorbeeld ``kvk``.
9. Vul de claim in die het (eventuele) vestigingsnummer bevat bij
**Vestigingsnummer-claim**. Indien onbekend, laat dan de standaardwaarde staan.
10. Vul bij **Identificatie handelende persoon-claim** de claim in die de identificatie
bevat van de medewerker die namens het bedrijf inlogt.
11. Voer bij **betrouwbaarheidsniveau-claim** de naam van de claim in (bijvoorbeeld
``authsp_level``) als die bekend is. Indien niet, kies dan bij
**Standaardbetrouwbaarheidsniveau** de waarde die meest van toepassing is. Dit wordt
enkel gebruikt om vast te leggen met welk betrouwbaarheidsniveau iemand ingelogd is.
12. Indien gewenst, dan kan je waardenvertalingen voor de betrouwbaarheidsniveaus toevoegen,
bijvoorbeeld:

* klik op "Add item"
* Kies "Tekstuele waarde" in de **From** dropdown en voer de waarde ``00`` op in het
tekstveld
* Selecteer "Non existent" in de **To** dropdown
* Herhaal voor andere waarden en niveaus

Vervolgens richt je de endpoints van de OIDC provider in, deze kunnen automatisch
bepaald worden aan de hand van het discovery endpoint
(``https://login.gemeente.nl/auth/realms/{realm}/.well-known/openid-configuration``).

7. Vul bij **Discovery endpoint** het pad naar het juiste authenticatie realm endpoint
van de OpenID Connect provider in (met een `/` op het einde),
meestal is dit ``https://login.gemeente.nl/auth/realms/{realm}/``.
8. Laat de overige endpoints leeg.
13. Vul bij **Discovery endpoint** het pad naar het juiste authenticatie realm endpoint
van de OpenID Connect provider in (met een ``/`` op het einde),
bijvoorbeeld ``https://login.gemeente.nl/auth/realms/{realm}/``.
14. Laat de overige endpoints leeg - deze worden automatisch aangevuld.

Klik tot slot rechtsonder op **Opslaan**.
Klik tot slot linksonder op **Opslaan**.

Nu kan er een formulier aangemaakt worden met het authenticatie backend ``eHerkenning via OpenID Connect``, zie :ref:`manual_forms_basics`.
Je kan nu een formulier aanmaken met de ``eHerkenning via OpenID Connect``
authenticatie-plugin, zie :ref:`manual_forms_basics`.
Loading

0 comments on commit e643c92

Please sign in to comment.