Using Graph API to read Azure AD Directory Extensions

Hallo zusammen,

Im Blog Artikel "Azure AD Connect 1.1" habe ich euch ja gezeigt wie weitere AD Attribute mit "Directory Extensions" ins Azure AD synchronisiert werden können. Im Beispiel habe ich das AD Attribut "employeeID" zur Synchronisierung zum Azure AD hinzugefügt.

Über die normale O365 Powershell, bei der man die User und Gruppen verwalten kann, ist das Attribut "employeeID" nirgens zu sehen.

Graph API

Schema Erweiterungen im Azure AD können über das Graph API erstellt werden und die zusätzlichen Attribute auch so wieder ausgelesen werden.

Azure AD Graph API reference

https://msdn.microsoft.com/de-ch/library/azure/ad/graph/api/api-catalog

Mit dem Graph Explorer kann man kurz mal testen ob das Attribut vorhanden ist.

Wie man am obenstehenden Bild erkennen kann, besteht das Attribut aus "Extension_guid_AttributeName".

Anwendung hinzufügen

Damit man das mit der Powershell abfragen kann muss man erst mal eine Anwendung hinzufügen.

Integrieren von Anwendungen in Azure Active Directory

https://azure.microsoft.com/de-de/documentation/articles/active-directory-integrating-applications/

Als Umleitungs URI habe ich folgendes hinzugefügt "urn:ietf:wg:oauth:2.0:oob"

Anschliessend muss man für die Applikation noch Berechtigungen vergeben.

ADAL - Azure AD Authentication Library

Für die Anmeldung an Azure AD wurde eine Library entwickelt, welche das Anmelden vereinfacht.

Azure AD Authentication Library for .NET

https://msdn.microsoft.com/en-us/library/azure/jj573266.aspx

 

Azure Active Directory Authentication Libraries

https://azure.microsoft.com/en-us/documentation/articles/active-directory-authentication-libraries/

Die ADAL Librarys kann man am besten mit nuget.exe herunterladen

 

NuGet Command-Line Utility

http://dist.nuget.org/win-x86-commandline/latest/nuget.exe

nuget.exe install Microsoft.IdentityModel.Clients.ActiveDirectory

Powershell Abfrage

Directory schema extensions | Graph API concepts

https://msdn.microsoft.com/Library/Azure/Ad/Graph/howto/azure-ad-graph-api-directory-schema-extensions#ReadAnExtensionValue

Und so sieht das fertige Script zum Abfragen dann aus.

#Load ADAL Library
Add-Type -path C:\TEMP\Microsoft.IdentityModel.Clients.ActiveDirectory.2.22.302111727\lib\net45\Microsoft.IdentityModel.Clients.ActiveDirectory.dll
 
#Create ADAL AuthenticationContext Object
$authenticationContext = New-Object Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext -ArgumentList @(
   $false                             #validateAuthority
)
 
#Authenticate to Graph API
$resource    = "https://graph.windows.net"
$clientId    = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
$redirectUri = [uri]"urn:ietf:wg:oauth:2.0:oob"
$authenticationResult = $authenticationContext.AcquireToken($resource, $clientId, $redirectUri)
 
#Get User
$header = $authenticationResult.CreateAuthorizationHeader()
$result = Invoke-RestMethod -Method Get -Uri $uri -Headers @{"Authorization"=$header;"Content-Type"="application/json"}

Grüsse
Andres Bohren