Sinds tripleforms 4.3 is er een generieke SAML authenticatie module. Deze module kan gebruikt worden om bijvoorbeeld met DigiD, eherkenning, eIDAS of een andere IDP (identity provider) te koppelen. In dit artikel beschrijven we hoe je de module met DigiD kan koppelen.
Benodigdheden en tips
- Zorg ervoor dat de IIS application pool rechten heeft op de private key
- Zorg er ook voor dat de key van het certificaat als exporteerbaar is gemarkeerd bij het installeren van het certificaat met private key.
Dit kun je achteraf controleren door het certificaat te exporteren ("All Tasks -> Export...").
Als dit werkt dan is het certificaat als exporteerbaar gemarkeerd. Zo niet, dan dien je het certificaat met private key opnieuw in de certificate store te zetten.
Inrichten DigiD SAML koppeling aanvulling op de generieke instructie
Open je tripleforms project vanuit de editor en open de settings van je project
(TAB) General
Classifier: Voor DigiD kies PublicDomain (De dienst valt binnen het publieke domein)
(TAB) Identity provider
Druk op de knop Load IDP metadata, hiermee laadt je de meeste gegevens in van de IDP.
Gebruik onderstaande urls om de IDP van DigiD informatie in te laden.
Preproductie-omgeving
https://rd.kodision.nl/idp/f275033d-0c21-4160-ac16-f5f168e27264/Metadata
Productie-omgeving
https://was.digid.nl/saml/idp/metadata
Druk na het invullen van de URL op Ok;
Voorbeeld:
Controleer of de signing correct staat sha1
(TAB) Service provider
Voeg onderstaand toe
Entity ID:https://demo.kodision.nl/MijnOmgeving/Saml2/DigiD bestaat uit URL website plus Saml2{{Connector}}
NameIdFormat: Dit is het NameIdFormat van de NameIdPolicy wat mee wordt gestuurd bij het Authnrequest, voor DigiD moet de waarde Persistent gebruikt worden
Allow Create: Dit is het Allow Create van de NameIdPolicy wat mee wordt gestuurd bij het Authnrequest, voor DigiD moet deze aangevinkt worden
(TAB) Organization
Basisgegevens invullen
(TAB) Contact Persons
Voeg een persoon toe:
(TAB) Services
Voeg een service of meerdere services toe
Attribute Consuming Service Name: Voeg hetzelfde als het EntityID toe uit TAB Service Provider
Attribute Consuming Service ID: Voeg hetzelfde als het EntityID toe uit TAB Service Provider
Service index: Dit index nummer geeft je uiteindelijk vanuit je formulier mee, om de betreffende service te kunnen starten
Level of assurance: Het beveiligingsniveau van de verbinding. Naamgeving van de niveaus verschilt tussen de verschillende protocollen.
DigiD beveiligingssniveaus
- Basis urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport
- Midden urn:oasis:names:tc:SAML:2.0:ac:classes:MobileTwoFactorContract
- Substantieel urn:oasis:names:tc:SAML:2.0:ac:classes:Smartcard o Hoog urn:oasis:names:tc:SAML:2.0:ac:classes:SmartcardPKI
Service description: Geef een omschrijving van de dient op
Service description url: Locatie van een uitgebreide dienstomschrijving meestal gemeente website url
Service Definition UUID: druk op de knop genereer
Service Instance UUID: druk op de knop genereer
Request attributes: blijven leeg
Kies na het toevoegen voor een default service
Voeg de connector toe
Druk op Add en daarna op Save
Inrichting SAML module in het project
Deze stap is alleen nodig als dit nog nooit eerder is gebeurd.
De SAML module dient aanwezig te zijn in de website van tripleforms, controleer dit in de website van tripleforms.
Als de module aanwezig is kan deze worden ingericht in het project, open het project van de tripleforms editor
Als de module niet aanwezig is in het project voegen we hem nu toe met de knop New.
Neem onderstaande configuratie over;
Label | Value | Description |
---|---|---|
ID | SAML2 Module | |
Description | Voorbeeld module saml2 in tripleforms 4.3 | |
URL | ~/modulesaml2/saml2.ascx | |
Parameters | ConnectionID | Naam van de connector uit de settings |
Command | Command(SignIn, Logout) | |
AcsIndex | Indexnummer van de service | |
ForceAuthn | Forceer opnieuw te authenticeren, True = opnieuw, False = niet opnieuw, wordt gebruikt voor bv dubbele DigiD/Partner login | |
Results | isauthenticated | Geeft aan of de aanmelding is geslaagd (“true”) of niet (“false”). Gebruik deze waarde |
nameidentifier | Name identifier | |
ResultCode | De resultaatcode van de aanmelding. De meest gangbare codes zijn 0000 (de gebruiker is succesvol aangemeld) en 0040 (de gebruiker heeft de aanmelding geannuleerd). Andere waarden geven aan dat de aanmelding is mislukt. In de documentatie van ASelect server vindt u de precieze betekenis van de verschillende waarden | |
ResultMessage | Als de aanmelding is mislukt: een technische beschrijving van de reden van falen |
Inrichting SAML module in het Scenario
De naam van de connector dient overeenkomen met naam van de connector die ingericht is in de settings van tripleforms. Als dit nog niet gebeurd is zien dan het aritkel Tripleforms 4.3: Generieke beschrijving Saml authenticatie koppelen IDP.
ConnectionID: Gebruik de connecter naam uit de settings
Vul het command SignIn bij parameters
AcsIndex: Gebruik het service Indexnummer van de service uit de settings
ForceAuthn: True bij partner login False bij enkele Login. Mag leeg blijven bij enkele login
Om de BSN van een gebruiker uit te lezen moeten de we parameter nameIdentifier uitlezen, plaats in het input een variabele op de bsn in te mappen.
BSN: Let op Het bsn komt niet direct terug. Dit moet middels een setvars uit de nameidentifier gehaald worden. De BSN zit namelijk achter een reeks cijfers en een dubbele punt. In een setVars kun je de bsn ophalen. Een voorbeeld om dit op te halen is
Code snipped
[*Substring([#globals.bsn];[*Calc(2+[*IndexOf([#globals.bsn];:)])])]
Setvars gebruik van de code snipped
Fout afhandeling
Wanneer er geen succesvolle loginpoging is gedaan zal de parameter isauthenticated gevuld zijn met de waarde false. Dan dient er een foutafhandeling plaats te vinden.
DigiD kent 2 soorten foutafhandeling; Annuleren en een daadwerkelijke fout in de communcatie
Indien de resultcode anders is dan success en resultmessage anders is dan AuthnFailed dan is er een fout opgetreden. DigiD vereist een foutpagina indien er een fout is opgetreden. Gaat het niet om een fout dan zal het een annuleringsactie zijn. Zie eisen van DigiD op https://www.logius.nl/
Uiteindelijke scenario.
Web.config
Controleer of het volgende in de web.config is opgenomen
<configSections>
<section name="system.identityModel" type="System.IdentityModel.Configuration.SystemIdentityModelSection, System.IdentityModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<section name="system.identityModel.services" type="System.IdentityModel.Services.Configuration.SystemIdentityModelServicesSection, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
</configSections>
<system.web>
<httpModules>
<add name="SessionAuthenticationModule" type="System.IdentityModel.Services.SessionAuthenticationModule, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</httpModules>
</system.web>
<system.webServer>
<modules>
<add name="SessionAuthenticationModule" type="System.IdentityModel.Services.SessionAuthenticationModule, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</modules>
</system.webServer>
Was dit artikel nuttig?
Dat is fantastisch!
Hartelijk dank voor uw beoordeling
Sorry dat we u niet konden helpen
Hartelijk dank voor uw beoordeling
Feedback verzonden
We stellen uw moeite op prijs en zullen proberen het artikel te verbeteren