SURFnet heeft een multifactor authenticatie (MFA) extensie ontwikkeld voor Microsoft AD FS voor gebruik met SURFsecureID. Met deze extensie kan de tweede factor van een gebruiker in SURFsecureID worden gebruikt voor MFA authenticatie in AD FS. De registratie, activatie en het beheer van de tweede factors blijft via SURFsecureID lopen. De authenticatie van een relying party (RP) die aangesloten is op de AD FS server blijft lopen via de AD FS server. Op de AD FS server wordt geconfigureerd wanneer er voor een RP MFA authenticatie nodig is. Als de ADFS MFA extensie voor SURFsecureID door AD FS wordt aangeroepen, dan verzorgd deze de authenticatie van de tweede factor van een gebruiker bij SURFsecureID.
De ADFS MFA Extensie is dus alleen voor gebruik van diensten – ook wel services, service providers, SPs, relying party of RPs genoemd – die direct op de eigen AD FS server van de instelling zijn aangesloten. Voor diensten die op SURFconext zijn aangesloten is de ADFS MFA extensie niet nodig.
Op deze pagina staat de installatie procedure van versie 2.0 van deze extensie beschreven. Ook geven we aan waar meer informatie over de extensie gevonden kan worden. Deze pagina beschrijft installatie van de plugin voor Windows 2012 R2, Windows 2016 en Windows 2019.
Voor gebruik van de plugin zijn nodig:
De MFA extensie moet op iedere AD FS server worden geïnstalleerd waarop MFA plaats moet vinden, dus typisch iedere AD FS server in de Farm. Deze instructies gaan ervanuit dat de configuratie van AD FS in de Windows Internal Database (WID) staat. Daarbij is altijd één AD FS server in de Farm de primary, en dit is de enige server die in AD FS configuratiewijzigingen kan maken. De plugin moet eerst op de primaire AD FS server geinstaleerd worden. De installatie procedure voor de 2e, 3e etc AD FS server wijkt iets af van die op de eerste server. Gedurende de installtatie is een herstart van de AD FS service nodig.
Staat er al een versie 1.0.x of 2.x van de plugin geinstalleerd voer dan een upgrade van de SURFsecureID ADFS plugin uit.
We raden aan een backup of snapshot te maken van de AD FS server(s) voorafgaand aan de installatie.
Download SetupPackage-2.0.2.exe
van https://github.com/SURFnet/ADFS-MFA-SAML2.0-Extension/releases/download/2.0.2/SetupPackage-2.0.2.exe. Dit is een self-extracting archive welke gesigned is door SURFnet bv
. Pak deze file uit op de primary AD FS server. Het SetupPackage bevat het installatieprograma (Steup.exe), de MFA extensie en de benodigde configuratie voor de verschillende SURFsecureID omgevingen: productie, pilot en test.
Voer het Setup.exe
uit de SetupPackage uit in check mode. Dit voert een aantal checks uit op de AD FS server. De AD FS service moet hiervoor gestart zijn.
Open een elevated command prompt op de AD FS server
Ga naar de directory waar het SetupPackage-2.x.x is uitgepakt en voer het ".\
Setup.exe -c
" commando uit.
Voer het Setup.exe
uit de SetupPackage uit in installatie/upgrade mode:
.\
Setup.exe -i
" commando uit.Het installatieprogramma zal om een aantal configuratiegegevens gaan vragen welke nodig zijn voor de configuratie van de plugin. Hieronder lopen we door de vragen die Setup stelt heen.
There are different SecondFactorOnly servers, their names suggest their usage. |
Hier configureer je welke SURFsecureID omgeving de MFA extensie moet gebruiken voor de verificatie van de tweede factor.
Every organization has a unique identifier 'schacHomeOrganization'. Together with user ID it is unique in SFO |
Geef hier de waarde op van het urn:mace:terena.org:attribute-def:schacHomeOrganization
attribuut (claim) dat voor de gebruikers in de organisatie door de identity provider naar SURFconext wordt doorgegeven. Deze waarde is onderdeel van het unieke gebruikers ID in SURFsecureID. Het gaat hier om de waarde van het SAML attribuut, bijvoorbeeld "surf.nl".
The name of the Active Directory attribute is required that contains the user ID (uid). Together with schacHomeOrganization it is unique in SFO |
Geeft hier de naam op van het attribuut in Active Directory waarin het user ID staat dat voor de gebruikers in de organisatie door de identity provider in het urn:mace:dir:attribute-def:uid
naar SURFconext wordt doorgegeven. Deze waarde is onderdeel van het unieke gebruikers ID in SURFsecureID.
The MFA extension needs a worldwide unique URI as an identifier in SAML2 requestsDefault value for 'MFA Extension (SP) entityID': http://adfs-2016.test2.surfconext.nl/stepup-mfa |
Geef hier het SP EntityID van de ADFS plugin op. Dit is het unieke ID van deze MFA extensie in SURFsecureID en is vrij te kiezen. Het formaat is een URI (URL). Zorg dat het voor iedereen duidelijk is dat dit bij deze MFA extensie installatie hoort, en gebruik een domein dat eigendom is van de eigen organisatie. Het setup programma doet zelf al een suggestie op basis van de DNS naam van de ADFS service.
The SFO MFA extension needs a certificate to sign its SAML2 messages |
De MFA extensie heeft een signing certificaat (met bijbehorende public/private keypair) nodig. Met dit certificaat worden de authenticatieverzoeken van de plugin naar SURFsecureID ondertekend. Gebruik hiervoor een selfsigned certificaat, een TLS server certificaat dat bij een certificaatverstrekker vandaan komt is dus niet geschikt.
Omdat dit een nieuwe installatie is, en we dus nog geen certificaat hebben, laten we het Setup programma een nieuw certificaat voor ons gegereren (optie 3) en we kiezen er ook voor om het certificaat met de private key als pfx file te exporteren, we hebben dit certificaat namelijk nodig voor de configuratie van de andere AD FS servers.
The new certificate is now in the Certificate Store (Local Computer). |
The (new) configuration settings are now as follows |
We krijgen nog een overzichtje van de gekozen instellingen
Install version 2.0.2.0 (ynx?): y |
De MFA extensie in nu geregistreerd in AD FS en is geinstalleerd op de Primary AD FS server. De MFA extensie en de configuratie bestanden voor de MFA extensie staan in de ADFS directory (typisch C:\Windows\ADFS).
De MFA extensie moet nu door de AD FS service geladen zijn. De identifier van de plugin is "ADFS.SCSA". Na het starten van de AD FS service staat hierover een bericht in het event log: "An authentication provider was successfully loaded: Identifier: 'ADFS.SCSA', Context: 'Proxy device TLS pipeline'". Gebruik de event viewer om dit te controloren. Kijk ook of er (andere) geen errors zijn ontstaan in AD FS:
De plugin zelf heeft ook een event log "AD FS Plugin". Hierin wordt bij het laden van de plugin een event weggeschreven met daarin de huidige configuratie van de plugin:
Tijdens de installatie heeft het Setup programma de configuratiegegevens die nodig zijn om de MFA extensie toe te voegen aan SURFsecureID weggeschreven in de config
directory in het SetupPackage. De naam van deze file is MfaRegistrationData.txt
.
Stuur deze file naar support@surfconext.nl en geef aan aan welke SURFsecureID omgeving je wilt koppelen (productie, pilot of test).
Voor het maken van de koppeling naar productie of pilot is toestemming van de SURFconext verantwoordelijke van de betreffende instelling nodig.
De plugin moet ook op de andere AD FS servers geinstalleerd worden. Hiervoor moet precies dezelfe configuratie worden gebruikt als op de Primary server. Om dit te vergemakelijken, en om onbedoelde configuratie verschillen te voorkomen, is er tijdens de installatie in de config
directory van het SetupPackage een UsedSettings.json
file met daarin de gemaakte configuratie keuzes weggeschreven. Deze gaan we gebruiken tijdens de instalatie op de secondary servers. Voer de onderstaande stappen uit op iedere secondary server.
Kopieer de hele SetupPackage directory van de Primary naar de secondary server(s). Hierin staat UsedSetting.json
en de gexporteerde pfx.
Voer het Setup.exe
uit de SetupPackage uit in installatie/upgrade mode:
.\
Setup.exe -i
" commando uit.Het installatieprogramma leest de configuratie uit de UsedSettings.json
. Omdat het certificaat wat in deze configuratie staat niet gevonden kan worden krijgen we de vraag of we een certificaat willen importeren. Dat willen we. Kies de eerder geëxporteerde pfx in de config directory van het setup package en geef het toen getoonde password op:
Do you want to import a certificate (ynx?): y |
Setup heeft nu een correct configuratie, en kan door met de installatie:
*** Setup did find a CORRECT CONFIGURATION. With settings as follows: |
Bekijk weer de beide event log om te verifieren dat de plugin goed geladen is.
Na installatie van de extensie zal deze als MFA extension als "ADFS.SCSA" beschikbaar zijn in AD FS, maar deze wordt nog niet gebruikt voor authenticatie. Daarvoor moet deze methode eerste aangezet worden, en moet aangegeven worden voor welke gebruikers en voor welke Relying Parties MFA vereist is.
Alle configuratie vindt plaats in AD FS Management (Administrative Tools).
Tijdens de installatie mislukt de registratie van de plugin met error:
Fatal PowerShell error in Set-AdfsGlobalAuthenticationPolicy:
ex.Message: PS0287 Authentication provider 'AzureMfaAuthentication' cannot be designated as primary since the Azure AD tenant is not configured. For more information see 'http://go.microsoft.com/fwlink/?LinkID=511874'.
Dit probleem wordt veroorzaakt door een probleem met de AzureMfaAuthentication ADFS MFA Extensie. We hebben dit niet kunnen reproduceren, maar andere gebruikers melden twee mogelijke oplossingen:
MFA-extension.SetupLog.txt
naar de SetupPackage. Deze file bevat een log van de installatieStepUp.RegistrationLog.txt
geschreven.Bewaar deze bestanden bij problemen met de installatie, configuratie, registratie etc van de extensie voordat je contact opneemt met support@surfconext.nl voor assistentie.
Algemene oplossingen:
Nadat de MFA extensie is geinstalleerd kan de configuratie worden aangepast. Een deinstallatie is hiervoor niet nodig. Zorg er bij het aanpassen van de configuratie voor dat alle AD FS server dezelfde configuratie van de plugin gebruiken. Geef bij wijzging van certificaat of EntityID van de plugin en bij wijziging van de hostname van de AD FS server opnieuw de MfaRegistrationData.txt
door aan support@surfconext.nl.
Gebruik Setup.exe in reconfigure mode voor het wijzigen van de configuratie:
Open een elevated command prompt op de AD FS server
Ga naar de directory waar het SetupPackage-2.x.x is uitgepakt en voer het ".\
Setup.exe -r
" commando uit.
Meer technische informatie over de extensie: https://github.com/SURFnet/ADFS-MFA-SAML2.0-Extension
De extensie maakt gebruik van de second factor only (SFO) interface van SURFsecureID. Meer informatie over SFO: Second Factor Only (SFO) Authentication
Meer informatie over de "Authentication Policies" in ADFS: Configure Authentication Policies