Active Directory en afkortingen

Disclaimer: de gids hieronder is resultaat van een snelle zoektocht, niet van een robuuste informatievergaring.

Wat is een directoryservice?

Een directoryservice is een softwarepakket dat instaat voor 1) authenticatie van gebruikers en 2) de (authorizatie van) toegang tot netwerkbronnen. Onder netwerkbronnen verstaan we hier netwerkschijven, printers, servers, … OpenLDAP is voorbeeld van een directoryservice, AD (Active Directory) en AAD (Azure Active Directory) zijn andere directoryservices met meer toeters en bellen. Belangrijk voor nu is: AAD is niet zomaar een cloudversie van AD, het is een heel ander beest.

Communicatie met directoryservices: LDAP en SAML

LDAP (Lightweight Dictionary Access Protocol) is een protocol waarmee we kunnen communiceren met directoryservices. Belangrijk is dat LDAP vooral bedoeld is voor gebruik binnen het lokale netwerk. Een SSL/TLS-variant van LDAP, genaamd LDAPS, bestaat. Al bij al blijft LDAP een oud protocol, gericht op on-premises, dat ten dode lijkt opgeschreven.

SAML (Security Assertion Markup Language) is een ander protocol, dat van betekenis is in SSO-flows, doorgaans in een internet/cloud-context. SAML werkt met IdP's (identity providers) en SP's (service providers). De idee is: om een dienst van een SP te gebruiken, moet eerst authenticatie door een IdP plaatsvinden.

Windows Server Active Directory

AD (Active Directory) is onderdeel van (on-premises) Windows Server en biedt verschillende diensten aan, relevant voor ons hier zijn:

  • AD DS (Active Directory Domain Services) gaat over Windows-domeinen. AD DS heeft een LDAP-interface.
  • AD LDS (Active Directory Lightweight Directory Services), vroeger bekend als ADAM (Active Directory Application Mode), is heel gelijkaardig aan AD DS, maar meer lichtgewicht: het vereist geen Windows-domeinen. Ook AD LDS heeft een LDAP-interface.
  • AD FS (Active Directory Federation Services): de standalone SSO-oplossing van Windows Server, met ondersteuning voor SSO-protocollen als SAML, OAuth en OpenID Connect.

Kortom: AD DS en AD LDS hebben een LDAP-interface, AD FS heeft een SAML-interface.

Azure Active Directory

AAD (Azure Active Directory) deelt zijn naam met AD uit Windows Server, maar is zoals gezegd niet zomaar een cloudversie van AD. Er is ook geen migratie naar AAD van AD, omdat het ene geen substituut is voor het andere. Consider it bad naming.

Wanneer we kijken naar LDAP: AAD heeft in tegenstelling tot AD geen ondersteuning voor LDAP. De officiële documentatie zegt dat wanneer LDAP wenselijk is, er een Azure AD DS (Azure AD Domain Services) en wat Azure Networking moet worden opgezet. Miserie, en ook wat gebruik van het ding buiten zijn originele intenties.

Wanneer we kijken naar SAML, wordt het Tricky. AAD (Azure Active Directory) kan als "IdP-in-the-cloud" fungeren in het kader van SAML. Het staat zo tegenover (het nu informeel deprecated) AD FS dat, zoals we al lazen, als on-premises SAML IdP kan fungeren.

Nu, sommigen hebben toch liever een on-premises IdP in plaats van een IdP-in-the-cloud. Voor wie een hybriede oplossing (cloud + on-premises) wenst, bestaat er AAD Connect (Azure AD Connect). AAD Connect zorgt voor integratie tussen AAD in de cloud en on-premises AD.

Tot slot: Azure AD B2B is een feature van AAD, waarmee organizaties anderen kunnen toegang geven tot hun applicaties en diensten (gastgebruikers). Azure AD B2C is gebaseerd op AAD technologie, maar een geheel ander product. Het maakt het mogelijk om externen te laten inloggen. Er zou nu ook iets nieuws zijn, External Identities, dat beide samenvoegt.

Microsoft Graph

Er is Azure AD Graph en Microsoft Graph. Dat eerste lijkt op het eerste gezicht deprecated, en dat tweede lijkt zijn vervanger. Microsoft Graph is een API voor de Microsoft cloud. Het geeft toegang tot gebruikers, groepen, bestanden, mails, kalenders, contacten, Excel, …

Met ADAL (Active Directory Authentication Library) en MSAL (Microsoft Authentication Library) zijn beide bibliotheken die gebruikers authenticeren voor gebruik van de Microsoft Graph. Beide bibliotheken werken op een andere manier: ADAL integreert met het oude “Azure AD for developers” (en overigens ook met het oude AD FS 2016), terwijl MSAL integreert met het Microsoft Identity Platform (en dus daardoor met ondersteuning voor Azure AD B2C). Needless to say: ADAL is deprecated.

In de context van Office-applicaties is er een SSO-mechanisme voor authenticatie: Office.js bevat een functie getAccessToken() die een token geeft. In dat geval: zorg altijd voor een fallbackmechanisme via het Microsoft Identity Platform, m.a.w. via MSAL.