Previously on the MS-graph series... In de vorige blog hebben we de connectie opgebouwd waarmee we kunnen communiceren via de Graph API. Deze connectie gaan we nodig hebben om er al een aantal toffe dingen mee te doen. In '#1: That moment you realize you have a connection' lees je meer over hoe we de connectie met Azure Active Directory door middel van Powershell hebben gemaakt. Nu deze connectie is gemaakt pakken we door en zullen we met deze connectie gebruikers aan gaan maken en misschien voegen we er hier en daar ook nog wat automation aan toe... lees snel verder!
*Friendly note: zoals inmiddels overal al wel gecommuniceerd is gaat Azure AD de naam van Entra ID krijgen. Ook wij zijn hip en bij de tijd en zullen dan ook deze naam gebruiken als we het over Azure AD hebben. 😉
Iedereen die wel eens met Azure en Entra ID heeft gespeeld (of gewerkt natuurlijk) heeft wel eens een dummy of test accountje aangemaakt. Dit is in het portaal een kwestie van UPN invoeren, het test account een naam geven en copy paste het 'temporary password'. Dit kost in principe niet veel tijd, het meeste werk zal gaan zitten in het bedenken van een naam voor het account (tenminste, dit is bij mij het geval).
Maar! Wanneer er meerdere accounts moeten worden aangemaakt wordt het toch wel een saai klusje. Daarom, hebben we bedacht om het met Powershell te doen! Misschien niet altijd de snelste oplossing, maar al een stuk leuker dan in de portal.
Sooo... where do we start?
Laten we beginnen met het invoeren van 1 persoon door middel van Powershell om te checken wat er allemaal opgevoerd zou moeten en kunnen worden. Alle vereisten staan hier goed voor gedocumenteerd. Omdat we direct een aantal dingen goed neer willen zetten voor onze nieuwe 'werknemers' kiezen we de volgende items om in te voeren:
- Voornaam;
- Achternaam;
- Afdeling;
- Titel.
In de vorige blog zijn we natuurlijk bezig geweest met het authentiseren en dit zullen we nu dan ook toepassen om de gebruiker te kunnen aanmaken. Hiervoor hebben we een andere permissie nodig dan degene die je hieronder ziet. Omdat wij zelf oppermachtig zijn in onze tenant kunnen we dit zelf doen, maar normaal gesproken zal hier consent voor gegeven moeten worden door een Administrator in Azure. 😉
Let's add some magic!
Nu duidelijk is welke gegevens er ingevuld moeten worden en hoe de Application Registration juist ingesteld staat om ook daadwerkelijk dingen weg te mogen schrijven in Entra ID. Net als de vorige keer hebben we daarvoor een klein stukje script gemaakt. Omdat we dit misschien vaker willen gaan gebruiken, hebben we hier ook direct een functie van gemaakt.
Het script bestaat uit de volgende onderdelen (en is onderaan de pagina ook in zijn geheel te zien, want sharing is caring).
Het eerste deel bevat een van de parameters die we hierboven al eens hebben aangekaart. Dit zijn de dingen die we graag bij onze 'medewerkers' terug willen zien.
Met de waardes die we hierboven invoeren moeten we wat data massage gaan doen, omdat Entra ID niet alles overal accepteert.
Het eerste wat we natuurlijk doen is het authenticeren via onze App reg met de Get-MSGraphToken functie vanuit de vorige blog. In de Pro-tips van Jildou hebben we de 'importance of passwords' geleerd. Daarom genereren we eerst een tijdelijk 'veilig' wachtwoord en zorgen we ervoor dat de gebruiker bij de eerste keer inloggen zijn/haar wachtwoord moet veranderen.
Voor de user principal name ($UPN) gebruiken we de voornaam en achternaam die we willen invoeren en klappen we daar de @bergcorp.nl extensie achter.
Voor de E-mail Nick name gebruiken we een combi van de voor-en achternaam. Voor de display name gebruiken we dezelfde combi van E-mail Nick name in combinatie met de job title.
Om het allemaal wat professioneler te laten lijken, checken we eerst of de gebruiker niet al bestaat (wel zo netjes). Mocht dit niet het geval zijn gaan we de gegevens richting Entra ID pushen in het volgende format:
Let's put it to the test.
Die printscreens zijn natuurlijk allemaal leuk en aardig, maar mooier is het natuurlijk om te zien dat het ook daadwerkelijk werkt! Omdat we bezig zijn om 'bergcorp' echt op de kaart te zetten hebben we versterking geregeld. Voor onze financiële tak gaan we onderstaande 'medewerker' opvoeren.
Wat ik eigenlijk altijd doe is de output van een functie opslaan onder een variable (in dit geval $newEmployee) geen idee of die best practice is maar ik vind dat handig 😛. Het voordeel hiervan is dat deze kan “outputten” of eventueel later nog gebruikt kan worden (moet je natuurlijk wel een Return statement in je functie hebben staan anders krijg je niks terug 😉 learned that the hard way). Bij het outputten van $newEmployee krijgen we het volgende terug:
*FYI: er zijn nog een aantal onPrem attributen die niet op deze printscreen staan vanwege ruimte.
Als we nu in Entra ID checken zien we dat de nieuwe medewerker is toegevoegd met alle attributen die we hier graag bij zien.
Nu we scriptmatig users hebben aagemaakt in Entra ID is het natuurlijk ook leuk om deze uiteindelijk toe te voegen aan groepen. Dit natuurlijk wederom door middel van de Graph. Next up on the MS-graph series... The MS-graph series #3: That moment you realize users always want to be in groups.