Ruud

28-10-2020 - 5 min

Single sign-on met Sitecore Identity Server & Active Directory

Deze blog gaat over de integratie tussen Sitecore IdentityServer en de On-Premise Active Directory (AD) Server en gaat in op de techniek rondom de implementatie hiervan. Deze integratie komt voort uit de wens van de klant om rollen en rechten centraal te beheren en te kunnen mappen op de bestaande rollen en rechten structuur van Sitecore Experience Accelerator (SXA) binnen het Sitecore 9 platform.

Klantvraag

De klant maakt gebruik van een On-Premise AD-Server waarbij makkelijk en snel rollen en rechten worden ingeregeld en aangepast voor nieuwe werknemers of bij eventuele functie wisselingen binnen het bedrijf.

De klant maakt gebruik van Sitecore als Experience platform. Binnen het bedrijf draaien de meeste sites op Sitecore 7, een oudere versie van Sitecore. Iets wat wij als Creates zijnde natuurlijk het liefst zo snel mogelijk naar een nieuwere versie van Sitecore overzetten zodat de klant gebruik kan maken van alle nieuwe features. Juist om die reden zijn we, in samenwerking met de klant, begonnen aan een migratie traject voor het upgraden van de huidige Sitecore 7 implementatie naar het nieuwe Sitecore 9 platform inclusief Sitecore Experience Accelerator (SXA).

Vanwege de Sitecore upgrade zagen we de kans om tevens het toekennen van rollen en rechten te versimpelen. Tot op heden werden rollen en rechten uitgedeeld door de functioneel applicatie beheerders. Kort samengevat: De applicatie beheerder maakt een nieuw account aan in Sitecore, laat de nieuwe werknemer zijn/haar wachtwoord invullen en voegt de gewenste Sitecore rollen toe aan de gebruiker, en dat voor elke omgeving (OTAP). Voor overige bedrijfsapplicaties werd reeds gebruik gemaakt van AD.

Dit proces was inefficiënt vanuit beheers oogpunt en vanuit gebruikers perspectief: de separate login was niet ideaal voor de eindgebruiker. Vandaar ook de vraag: Kunnen wij met de nieuwe versie van het Sitecore platform een integratie maken met de huidige AD-server, zodat alle rollen en rechten centraal beheerd worden en dat werknemers kunnen inloggen in Sitecore met zijn/haar AD account? Met andere woorden kunnen we binnen het Sitecore 9 Platform Single Sign-On realiseren op basis van AD?

Realisatie koppeling Sitecore / ADFS

Voor de koppeling tussen Sitecore en AD maken we gebruik van Active Directory Federation Services (ADFS). Omdat de infrastructuur bij de klant vrij specifiek is ingericht hebben we een klein testproject opgesteld waarbij we de connectie tussen Sitecore Identityserver en de AD server via ADFS hebben getest.

Uit dit vooronderzoek kwamen de volgende twee aandachtspunten:

  • Bereikbaarheid van ADFS in combinatie met bedrijfsproxyinstellingen
    Oplossing
    : Hostname van ADFS toevoegen aan de proxy bypass list
  • Geblokkeerde verbinding vanuit ADFS
    Oplossing
    : Toevoegen Web App (Sitecore) URL (Zelfde als Wtrealm instelling in Configuratie) aan Relying Party trusts in ADFS.

Vanaf Sitecore 9.1 maakt Sitecore gebruik van de SitecoreIdentity Server. Dit omdat vanuit Microsoft de standaard ASP.NET Membership provider vervangen gaat worden door het ASP.NET Identity mechanisme. Om met dit nieuwe mechanisme om te kunnen gaan heeft Sitecore ‘Sitecore Federated Authentication’ in het leven geroepen. Via Federated Authentication kan Sitecore gebruik maken van OWIN-middleware om gebruikers te valideren. OWIN staat voor Open Web Interface for .NET en is in feite een gestandaardiseerde manier om een koppeling te leggen tussen web applicaties en de servers waar deze op draaien.

“In addition to authentication through the Sitecore Identity Server, Sitecore also supports federated authentication through the Oauth and Owin standards. You can use federated authentication to let users log in to Sitecore or the website through an external provider such as Facebook, Google, Microsoft or ADFS. Federated authentication requires that you configure Sitecore in a specific way, depending on which external provider you use.”

Federated authentication service in relate tot Sitecore architectuur

Bron: https://doc.sitecore.com/developers/90/platform-administration-and-architecture/en/authentication-and-authorization.html

Zoals Sitecore zelf al aangeeft moet je Sitecore, wil je gebruik maken van Federated Authentication, op een specifieke manier configureren. Om die reden heb ik zelf een plugin gemaakt voor de Sitecore identityserver (.NET Core appliciatie) om het inloggen met ADFS binnen de infrastructuur van de klant mogelijk te maken. Deze plugin vormde dan ook de tastbare deliverable van dit vooronderzoek.

preview van het Sitecore login scherm inclusief ADFS login knop

Maatwerk toepassing Sitecore Experience Accelerator (SXA) rollen- en rechtenstructuur

Naast de daadwerkelijke koppeling tussen Sitecore en ADFS, om als gebruiker in te kunnen loggen in het CMS, moesten ook de rollen en rechten vanuit AD toegepast worden op de Sitecore users. Om dit goed in te kunnen regelen is er, in samenspraak met de klant , een security matrix opgesteld. Hierin hebben we alle benodigde rollen en rechten opgenomen en de rol namen gestandaardiseerd. Hierbij hebben we gebruik gemaakt van de standaard SXA rollenstructuur. Zo hebben we voor elke nieuwe site de volgende rol opbouw:

[Domain]\ {TenantName} {SiteName} {RoleName}

Op deze manier kunnen we de rollen en rechten structuur van de SXA standaarden respecteren.

https://doc.sitecore.com/developers/sxa/19/sitecore-experience-accelerator/en/the-sxa-security-roles.html

Bij het aanmaken van een nieuwe site worden normaal gesproken de standaard SXA rollen en rechten toegepast op de nieuwe site. Omdat wij gebruik maken van eigen gedefinieerde rollen was het noodzakelijk om de powershell scripts, die ervoor zorgen dat de rollen en rechten worden toegepast op de nieuwe website, op maat te maken. Dit hebben we gedaan omdat het hier gaat om een multisite omgeving, waarbij rollen en rechten per site anders ingericht moeten kunnen worden. Wanneer het gaat om slechts één site zou je er voor kunnen kiezen om de standaard SXA rollen aan te houden.

Vanwege het maatwerk zijn er aantal specifieke instructies nodig wanneer de klant een nieuwe site wilt toevoegen. Om deze reden hebben we een handleiding gemaakt die stap voor stap beschrijft hoe men een nieuwe site kan aanmaken in Sitecore en welke infra gerelateerde zaken daar bij komen kijken.

Resultaat

Al met al beschikt de klant over een compleet proces waarbij men makkelijk en snel nieuwe websites kan optuigen en kan beheren. Daarnaast kan men de rollen en rechten eenvoudig inregelen via hetzelfde systeem dat al in gebruik was bij de klant, namelijk AD.

Het belangrijkste voordeel is natuurlijk dat de gebruikers van het Sitecore platform beschikken over Single Sign-On voor Sitecore. Dit betekent dat men met het AD bedrijfsaccount waarover ze al beschikken ook in kunnen loggen in Sitecore. Hiermee wordt het gebruik van Sitecore vele malen laagdrempeliger voor developers, content editors en marketeers. Maar nog belangrijker, de veiligheid omtrent het gebruik van Sitecore wordt hiermee aanzienlijk verhoogt. Dit omdat er geen wachtwoorden voor losse Sitecore gebruikers meer rondslingeren en doordat er nu precies gelogd wordt wie, wat en wanneer een medewerker iets doet binnen Sitecore.

Wil je weten hoe je dit in jouw specifieke Sitecore omgeving kan implementeren, neem contact met me op.

Over de schrijver

Ruud de Kruif
Ruud creates solutions based on customers needs. Zijn passie voor technologie zet hij om in passende oplossingen voor de klant.
LinkedIn

Relevante artikelen