Skip to content

Commit

Permalink
Merge pull request #1537 from open-formulieren/feature/1471-eH-bewind…
Browse files Browse the repository at this point in the history
…voering

[#1471] eHerkenning bewindvoering
  • Loading branch information
sergei-maertens authored Apr 28, 2022
2 parents 7e28cc0 + 0307b89 commit 561cc8c
Show file tree
Hide file tree
Showing 21 changed files with 1,033 additions and 118 deletions.
2 changes: 1 addition & 1 deletion docs/configuration/authentication/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,6 @@ Authentication plugins
digid
eherkenning_eidas
oidc_digid
oidc_digid_machtigen
oidc_machtigen
oidc_eherkenning
other
58 changes: 0 additions & 58 deletions docs/configuration/authentication/oidc_digid_machtigen.rst

This file was deleted.

100 changes: 100 additions & 0 deletions docs/configuration/authentication/oidc_machtigen.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
.. _configuration_authentication_oidc_machtigen:

=============================================================================
OpenID Connect voor inloggen met DigiD Machtigen en eHerkenning bewindvoering
=============================================================================

Open Formulieren ondersteunt `DigiD Machtigen`_ en eHerkenning bewindvoering login voor burgers via het OpenID Connect
protocol (OIDC).
Burgers kunnen inloggen op Open Formulieren met hun DigiD/eHerkenning account en een formulier invullen namens iemand
anders. In deze flow:

* Een gebruiker klikt op de knop *Inloggen met DigiD Machtigen* of *Inloggen met eHerkenning bewindvoering* die op de startpagina van een formulier staat.
* De gebruiker wordt via de omgeving van de OpenID Connect provider (bijv. `Keycloak`_) naar DigiD/eHerkenning geleid, waar de gebruiker kan inloggen met *hun eigen* DigiD/eHerkenning inloggegevens.
* De gebruiker kan dan kiezen namens wie ze het formulier willen invullen.
* De gebruiker wordt daarna terug naar de OIDC omgeving gestuurd, die op zijn beurt de gebruiker weer terugstuurt naar Open Formulieren
* De gebruiker kan verder met het invullen van het formulier

.. _DigiD Machtigen: https://machtigen.digid.nl/
.. _Keycloak: https://www.keycloak.org/

.. _configuration_oidc_digid_machtigen_appgroup:

Configureren van OIDC voor DigiD Machtigen
==========================================

De stappen hier zijn dezelfde als voor :ref:`configuration_oidc_digid_appgroup`, maar de **Redirect URI**
is ``https://open-formulieren.gemeente.nl/digid-oidc-machtigen/callback/`` (met het juiste domein in plaats van
``open-formulieren.gemeente.nl``).

Aan het eind van dit proces moet u de volgende gegevens hebben:

* Server adres, bijvoorbeeld ``login.gemeente.nl``
* Client ID, bijvoorbeeld ``a7d14516-8b20-418f-b34e-25f53c930948``
* Client secret, bijvoorbeeld ``97d663a9-3624-4930-90c7-2b90635bd990``

Configureren van OIDC in Open Formulieren
=========================================

Om OIDC in Open-Formulieren te kunnen configureren zijn de volgende :ref:`gegevens <configuration_oidc_digid_machtigen_appgroup>` nodig:

* Server adres
* Client ID
* Client secret

Navigeer vervolgens in de admin naar **Configuratie** > **OpenID Connect configuration for DigiD Machtigen**.

#. Vink *Enable* aan om OIDC in te schakelen.
#. Vul bij **OpenID Connect client ID** het Client ID in, bijvoorbeeld ``a7d14516-8b20-418f-b34e-25f53c930948``.
#. Vul bij **OpenID Connect secret** het Client secret in, bijvoobeeld ``97d663a9-3624-4930-90c7-2b90635bd990``.
#. Vul bij **OpenID Connect scopes** ``openid``.
#. Vul bij **OpenID sign algorithm** ``RS256`` in.
#. Laat **Sign key** leeg.
#. Laat bij **Vertegenwoordigde claim name** de standaardwaarde staan, tenzij de naam van het BSN veld van de vertegenwoordigde in de OIDC claims anders is dan ``aanvrager.bsn``.
#. Laat bij **Gemachtigde claim name** de standaardwaarde staan, tenzij de naam van het BSN veld van de gemachtigde in de OIDC claims anders is dan ``gemachtigde.bsn``.

De endpoints die ingesteld moeten worden zijn dezelfde als voor DigiD. U kunt de stappen in :ref:`configuration_oidc_digid_appgroup`
volgen om die te configureren.

Nu kan er een formulier aangemaakt worden met het authenticatie backend ``DigiD Machtigen via OpenID Connect`` (zie :ref:`manual_forms_basics`).

.. _configuration_oidc_eh_bewindvoering_appgroup:

Configureren van OIDC voor eHerkenning bewindvoering
====================================================

De stappen hier zijn dezelfde als voor :ref:`configuration_oidc_digid_machtigen_appgroup`, maar de **Redirect URI**
is ``https://open-formulieren.gemeente.nl/eherkenning-bewindvoering-oidc/callback/`` (met het juiste domein in plaats van
``open-formulieren.gemeente.nl``).

Aan het eind van dit proces moet u de volgende gegevens hebben:

* OpenID connect client discovery endpoint, bijvoorbeeld ``https://keycloak-test.nl/auth/realms/zgw-publiek/``
* Client ID, bijvoorbeeld ``a7d14516-8b20-418f-b34e-25f53c930948``
* Client secret, bijvoorbeeld ``97d663a9-3624-4930-90c7-2b90635bd990``
* Identity provider hint (optioneel)

Configureren van OIDC in Open Formulieren
=========================================

Om OIDC in Open-Formulieren te kunnen configureren zijn de volgende :ref:`gegevens <configuration_oidc_eh_bewindvoering_appgroup>` nodig:

* OpenID connect client discovery endpoint
* Client ID
* Client secret
* Identity provider hint (optioneel)

Navigeer vervolgens in de admin naar **Configuratie** > **OpenID Connect configuration for eHerkenning bewindvoering**.

#. Vink *Enable* aan om OIDC in te schakelen.
#. Vul bij **OpenID Connect client ID** het Client ID in, bijvoorbeeld ``a7d14516-8b20-418f-b34e-25f53c930948``.
#. Vul bij **OpenID Connect secret** het Client secret in, bijvoobeeld ``97d663a9-3624-4930-90c7-2b90635bd990``.
#. Vul bij **OpenID Connect scopes** ``openid``.
#. Vul bij **OpenID sign algorithm** ``RS256`` in.
#. Laat **Sign key** leeg.
#. Laat bij **Vertegenwoordigd bedrijf claim name** de standaardwaarde staan, tenzij de naam van het KvK veld van de vertegenwoordigde in de OIDC claims anders is dan ``aanvrager.kvk``.
#. Laat bij **Gemachtigde persoon claim name** de standaardwaarde staan, tenzij de naam van het ID veld van de gemachtigde in de OIDC claims anders is dan ``gemachtigde.bsn``.
#. De endpoints die ingesteld moeten worden zijn dezelfde als voor DigiD. U kunt de stappen in :ref:`configuration_oidc_digid_appgroup` volgen om die te configureren.
#. Als u een Identity Provider hint heeft, dan vul het in. Voor Keycloak is dit nodig.

Nu kan er een formulier aangemaakt worden met het authenticatie backend ``eHerkenning bewindvoering via OpenID Connect`` (zie :ref:`manual_forms_basics`).
51 changes: 51 additions & 0 deletions src/digid_eherkenning_oidc_generics/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,13 @@

from .forms import (
OpenIDConnectDigiDMachtigenConfigForm,
OpenIDConnectEHerkenningBewindvoeringConfigForm,
OpenIDConnectEHerkenningConfigForm,
OpenIDConnectPublicConfigForm,
)
from .models import (
OpenIDConnectDigiDMachtigenConfig,
OpenIDConnectEHerkenningBewindvoeringConfig,
OpenIDConnectEHerkenningConfig,
OpenIDConnectPublicConfig,
)
Expand Down Expand Up @@ -107,3 +109,52 @@ class OpenIDConnectConfigDigiDMachtigenAdmin(DynamicArrayMixin, SingletonModelAd
),
(_("Keycloak specific settings"), {"fields": ("oidc_keycloak_idp_hint",)}),
)


@admin.register(OpenIDConnectEHerkenningBewindvoeringConfig)
class OpenIDConnectConfigEHerkenningBewindvoeringAdmin(
DynamicArrayMixin, SingletonModelAdmin
):
form = OpenIDConnectEHerkenningBewindvoeringConfigForm

fieldsets = (
(
_("Activation"),
{"fields": ("enabled",)},
),
(
_("Common settings"),
{
"fields": (
"oidc_rp_client_id",
"oidc_rp_client_secret",
"oidc_rp_scopes_list",
"oidc_rp_sign_algo",
"oidc_rp_idp_sign_key",
)
},
),
(
_("Attributes to extract from claim"),
{
"fields": (
"vertegenwoordigde_company_claim_name",
"gemachtigde_person_claim_name",
)
},
),
(
_("Endpoints"),
{
"fields": (
"oidc_op_discovery_endpoint",
"oidc_op_jwks_endpoint",
"oidc_op_authorization_endpoint",
"oidc_op_token_endpoint",
"oidc_op_user_endpoint",
"oidc_op_logout_endpoint",
)
},
),
(_("Keycloak specific settings"), {"fields": ("oidc_keycloak_idp_hint",)}),
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
EHERKENNING_BEWINDVOERING_CUSTOM_OIDC_DB_PREFIX = "eherkenning_bewindvoering_oidc"
OIDC_AUTHENTICATION_CALLBACK_URL = "eherkenning_bewindvoering_oidc:callback"
9 changes: 9 additions & 0 deletions src/digid_eherkenning_oidc_generics/forms.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@

from .models import (
OpenIDConnectDigiDMachtigenConfig,
OpenIDConnectEHerkenningBewindvoeringConfig,
OpenIDConnectEHerkenningConfig,
OpenIDConnectPublicConfig,
)
Expand Down Expand Up @@ -70,3 +71,11 @@ class OpenIDConnectDigiDMachtigenConfigForm(OpenIDConnectBaseConfigForm):
class Meta:
model = OpenIDConnectDigiDMachtigenConfig
fields = "__all__"


class OpenIDConnectEHerkenningBewindvoeringConfigForm(OpenIDConnectBaseConfigForm):
plugin_identifier = "eherkenning_bewindvoering_oidc"

class Meta:
model = OpenIDConnectEHerkenningBewindvoeringConfig
fields = "__all__"
Loading

0 comments on commit 561cc8c

Please sign in to comment.