Azure kent enkele beperkingen aangaande Multi Valued attributen. Dit is in SURFconext een veel gebruikte techniek. Azure is hierin minder flexibel in dan andere identity management systemen van Microsoft, zoals ADFS. Op deze pagina vind je achtergrondinformatie.
Probleemstelling
Als identiteitsoplossing kan Azure AD worden gezien als een Active Directory Lightweight Directory Services (AD LDS) implementatie. On premises wordt deze oplossing gebruikt om specifieke applicaties (en hun schema-extenties) of specifieke objecten (zoals gastgebruikers) te ondersteunen. AD LDS heeft, net als AD DS een limiet van objecten die onvoldoende is voor een dienst die mondiaal beschikbaar is. Microsoft heeft daarom de objecten die over meerdere AD LDS instanties gebruikt kunnen worden dynamisch worden beperkt. Hieraan ligt de beperking van het gebruik van multi-valued attributen ten grondslag.
SURFconext heeft meerdere attributen die multi-valued kunnen zijn: entitlements, affiliation, personal code etc. In Azure hebben we de volgende mogelijkheden om multivalued attributen te realiseren:
- Gebruik Azure AD Connect om multivalued attributen te gebruiken zoals je gewend bent en om alles uit SURFconext te halen.
- Kies voor 1 multivalued attribuut in een standaard Azure oplossing door gebruik te maken van Assigned Roles.
Azure AD Connect
Organisaties kunnen ervoor kiezen om objecten zoals accounts, groepen en apparaten in Azure AD zelf aan te maken. Dit is de meest voor hand liggende oplossing. Om multi-valued attributen mogelijk te maken moet je kiezen te synchroniseren vanuit een organisatie-eigen, on-premise, Active Directory LDAPv3 compatibele identiteitsoplossing. Er zijn instellingen die hiervan gebruik maken. Wanneer objecten als dit worden gesynchroniseerd, spreken we over Hybride Identiteiten. Ook attributen van objecten met meerdere waarden (multi-valued attributen dus), en attributen vanuit eigen schema extensies kunnen dan worden gesynchroniseerd en doorgegeven aan een applicatie zoals SURFconext. Zie het plaatje hieronder.
Voor synchronisatie bestaan verschillende oplossingen, maar Azure AD Connect is de oplossing die door het overgrote deel van organisaties wordt gebruikt. Met Azure AD Connect kan ook worden ingesteld wat de authenticatiemethode is. Hierbij kan worden gekozen uit Federatie met Active Directory Federation Services (AD FS) of PingFederate, Pass through Authentication (PTA) of Password Hash Synchronization (PHS). Dit valt buiten de scope van dit artikel maar houd hier rekening mee als je hier voor kiest.
Multivalued Attributen door gebruik te maken van Assigned Roles
Zoals aangegeven kun je, als je geen on premise oplossing zoals Azure AD Connect hebt, één attribuut naar SURFconext vanuit Azure AD multivalued doorgeven aan SURFconext. Dit doe je door gebruik te maken van "User Assigned Roles". Om deze 'Assigned Roles' in een attribuut te krijgen, ga je een App Roles aanmaken, wat feitelijk de attribuut waarden worden. Die app roles koppel je vervolgens aan gebruikers of groepen. Je doorloopt drie stappen:
- Definieer een app role.
- Koppel de app role aan gebruikers en/of groepen.
- Ken 'assigned roles' toe aan het SURFconext SAML Attribuut naar keuze.
App Rollen aanmaken
Eerst gaan we naar de 'App Registrations' van jouw AD. Als je SURFconext niet direct ziet, klik dan op 'All applications'. Selecteer SURFconext. Klik op 'App roles'. Hier gaan we een rol voor de SURFconext app aanmaken. We nemen als voorbeeld eduPersonEntitlement.
Gebruik voor Display name een voor jou makkelijk te gebruiken naam. Onder Value vul je de SAML-waarde in die nodig is voor dit attribuut. Dat is in dit voorbeeld een urn voor eduVPN. Maak hier alle noodzakelijke rollen aan voor jouw organisatie.
Ken de App Rollen toe aan gebruikers
Navigeer vervolgens naar Enterprise-applications en selecteer SURFconext. Daar gaan we groepen toekennen aan de SURFconext app roles. Klik daar op Add user/group. Selecteer de gebruiker of groep die je aan een app role wilt toekennen, zie het screenshot hieronder.
Attribuut in SURFconext koppelen aan user.assignedroles
De toegekende rollen moeten gekoppeld zijn aan een attribuut in de SURFconext app. Ga naar Enterprise applications, en selecteer de SURFconext koppeling. Navigeer vervolgens naar 'Set up single sign on', en bewerk vervolgens de 'Attributes & Claims'. Voeg daar een Claim toe, en definieer deze bijvoorbeeld als volgt:
Claim | Name | Namespace | Source | Source attribute |
eduPersonEntitlement | urn:mace:dir:attribute-def:eduPersonEntitlement | Leeg laten | Attribute | user.assignedroles |
Test het attribuut
Als je klaar bent, ga dan naar onze debugpagina op test of productie om de output te verifiëren. Dit zou er zo uit kunnen zien:
Conclusie
Met de beperkte mogelijkheden die Azure levert inzake multivalued attributen is het zaak dat je goed nadenkt over de keuze hoe hier mee om te gaan. Je zult een on-prem oplossing in de vorm van Azure AD Connect in moeten richten om het maximale uit SURFconext te halen of je kiest welk attribuut multivalued met SURFconext gaat werken.