-
Notifications
You must be signed in to change notification settings - Fork 6
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
✨ [#1902/1903] DigiD/eHerkenning via OIDC #879
Conversation
8c1d650
to
3b63168
Compare
575ac6e
to
b1fcb69
Compare
c165770
to
37cbef8
Compare
37cbef8
to
e0892ca
Compare
Codecov ReportAttention:
Additional details and impacted files@@ Coverage Diff @@
## develop #879 +/- ##
===========================================
+ Coverage 92.81% 92.91% +0.10%
===========================================
Files 802 815 +13
Lines 27516 28001 +485
===========================================
+ Hits 25538 26017 +479
- Misses 1978 1984 +6 ☔ View full report in Codecov by Sentry. |
Interesting approach, adding keycloak to the docker setup and as a (possible) CI step would offer a nice integrationtest for OIDC. Ensure that you check that cancelling the loginflow also works as expected. This currently isn't working properly for Open Formulieren in combination with OIDC+DigiD, but showing a proper 'cancellation' message is a mandatory part of a DigiD audit.
Please do (or at least create an issue for it). This sounds like a bit of a timebomb if you ran into it using OIDC, it is our own library but haven't seen this cause problems before.
We don't need anything other than the BSN if HaalCentraal BRP is connected, but I suspect that we can use the claim mapping if that's not the case? Either way the default claim mapping can be empty.
I'm open to suggestions and further improvements. Maybe turn it the other way around, that we configure it via the siteconfig (DigiD: disabled, mock, Logius/SAML, OIDC) and that configuring this in turn toggles the SAML/OIDC config on? Maybe @pi-sigma has suggestions too. |
@stevenbal The url max length issue has been reported and (should be) fixed by converting the |
return user | ||
|
||
def update_user(self, user, claims): | ||
# TODO should we do anything here? or do we only fetch data from HaalCentraal |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Let's try to resolve this question (discuss with @alextreme) so it doesn't remain here.
@stevenbal The two-step approach to configuring eHerkenning with OIDC/SAML may not be ideal, but enabling all of it in siteconfig has its own issues. The most straightforward approach IMHO would be to keep the two-step approach, but document the OIDC/SAML config options in the eHerkenning help text in siteconfig. Perhaps even include a link to |
@alextreme I'm not sure how to test this locally without actually connecting to a DigiD test/preprod instance (via Keycloak). Keycloak itself doesn't provide a cancel button that I could test with, should returning to the previous page also lead to this cancellation message? |
In that case create a task to verify this after the next release on acc. |
The singletonmodels for DigD and eHerkenning OIDC don't have claim mappings (copied them from openforms), so currently all that is taken from the payload is BSN/KVK |
tasks: * https://taiga.maykinmedia.nl/project/open-inwoner/task/1902 * https://taiga.maykinmedia.nl/project/open-inwoner/task/1903 To avoid the OIDC backends for other variants attempting to authenticate a user for another variant, we check if the callback path matches or not
002caf6
to
6a019ca
Compare
@alextreme @pi-sigma with regards to the feature flags, I updated the helptext for |
Ah you are correct. As long as there is a 'Claimnaam BSN' that can be modified, it normally should be bsn but I've noticed that different OIDC brokers pass along this value in a different attribute. |
tasks:
Issues:
log-outgoing-requests fails on logout due to the URL being longer than 1000 chars (-> already fixed in [#29] change url field to textfield django-log-outgoing-requests#30 as Paul remarkeddjango.db.utils.DataError: value too long for type character varying(1000)
). We should probably truncate chars past 1000 in the library?