Der Einstieg in die Programmierung mit FIM 2010 (bzw. neuerdings ja MIM 2016) ist nicht unbedingt einfach. Es gibt wenig Code-Beispiele, an Dokumentation gibt es generell nicht riesig viel und zumindest bisher waren auch die APIs teilweise etwas umständlich.
Die wichtigsten FIM-APIs sind:
API | Technologie | Einsatzzweck | Anmerkungen |
Provision API | .NET Remoting | Integration von FIM CM in andere Systeme
Eigene FIM CM-Frontends |
Nicht alle Features von FIM CM sind in der API exponiert |
Notification API | .NET-Interface | Customized Handling von FIM CM-Events | |
Certificate Management REST API | REST | Integration von MIM CM in andere Systeme
Eigene MIM CM-Frontends |
Erst ab MIM 2016 |
FIM Service API | SOAP | CRUD-Operationen auf FIM-Objekten | |
Privileged Access Management REST API | REST | Rights Elevation im Rahmen des Privileged Access Management-Features ansteuern | Erst ab MIM 2016 |
Um Einsteigern zu helfen, hier einige Tools und Techniken, die viel Zeit sparen können:
- Es gibt eine Referenzimplementierung namens FIM 2010 Resource Management Client für die Ansteuerung der FIM Service-SOAP-API. Der funktioniert schon mal relativ gut, hat aber einige Schwächen. Einen verbesserten Fork von Predica findet man hier.
- Alternativ gibt es den völlig neu entwickelten und sehr einfach zu verwendenden Lithnet FIM Service Client.
- Ebenfalls von Predica kommt der FimExplorer, mit dem man ohne das schwerfällige FIM Portal Informationen aus dem FIM Service auslesen kann. Allein das kann einen schon 50% produktiver machen. Highlights sind:
- Direkte Auswertung von XPath-Anfragen.
- Bei Referenzfeldern kann man sich direkt zu den referenzierten Objekten durchklicken.
- Lookup nach ObjectID
- Ein ähnliches, etwas älteres Tool ist das FIM Query Tool. Meiner Erfahrung nach ist dieses Tool vor allem bei größeren Abfragen stabiler, dafür kann man nicht mit XPath arbeiten, sondern muss eine SQL-ähnliche Syntax verwenden. Außerdem kommt mir dieses Tool im Detail etwas durchdachter vor.
- FIM stellt von Haus aus eine Reihe von PowerShell-CmdLets zur Datenimport- und Export bereit, welche vor allem für Migrationen gedacht sind und für alle anderen Automatisierungszwecke relativ umständlich zu handhaben sind. Das FIM PowerShell Module wrappt die mitgelieferten PowerShell-Calls so, dass sie auch von der Kommandozeile aus praktisch nutzbar werden. Wo z.B. mit Bordmitteln ein simples Update gerne mal 10 Codezeilen beansprucht, geht es mit dem FIM PowerShellModule in einer Zeile.
- Der FIM Service unterstützt Workflow Foundation, um komplexere Prozessanforderungen umzusetzen. Das wäre ja an sich nicht schlimm, durch die Art, wie die CRUD-Operationen aber abgebildet sind, werden simple Operationen wie “Ändere bei allen Usern den Firmennamen” über die Maßen kompliziert. Ich bin dazu übergegangen, in den meisten Fällen alle Workflows in PowerShell umzusetzen; dabei hilft die FIM PowerShell Workflow Activity von Edgile, welche technisch gesehen einfach eine Workflow-Activity implementiert, die ein PowerShell-Skript ausführt und diesem auch Zugriff auf das Workflow-Dictionary ermöglicht. Mit dem Last FIM Workflow You Will Ever Need gibt es ähnliches auch für C#-Code.