SharePoint Online UserProfile und Office AMS

Von Toni+Pohl+(Gastblogger) Autor Feed 29. June 2014 23:00

Microsoft SharePoint verwendet seine eigenen SharePoint Userprofiles um Benutzerdaten zu verwalten. Bei Verwendung von Office 365 und SharePoint Online (SPO) werden jedoch die Benutzerkonten und die wichtigsten Benutzerdaten aus dem Azure Active Directory (AAD) nach SPO User Profiles synchronisiert – besser gesagt kopiert, da die Daten nur in die Richtung von AAD nach SPO transportiert werden. Martina hat hierzu im TechNet Blog einen langen Artikel geschrieben, wo diese Synchronisierung und die entsprechenden Benutzerdaten beschrieben sind.

Hier geht es nun darum, wie man per App selbst Daten in die SharePoint Userprofiles schreiben kann.

Wozu Daten in Userprofiles schreiben?

In vielen Unternehmen sind personenbezogene Daten in mehreren Systemen vorhanden, etwa im eigenen Active Directory (AD), in HR-Systemen, Rechteverwaltungstools, Intranet-Systemen u.v.m. Oft macht es Sinn, Benutzerinformationen in anderen Systemen wie etwa in SPO weiterzuverwenden. Dazu können diese wie oben beschrieben über das eigene AD mit Tools wie DirSync und ADFS nach AAD und von dort automatisch in SPO UserProfiles transportiert werden.

Als Alternative zu diesem Weg können Daten aber auch mit eigenen Apps in die SPO UserProfiles geschrieben werden. Das ist etwa dann sinnvoll, wenn Benutzerdaten nicht im AD aber in anderen Systemen vorhanden sind und in SPO weiterverwendet werden sollen.

image_thumb2

Das Office App Model Samples (AMS) project

Eigentlich ist das Beschreiben der SPO UserProfiles gar nicht so einfach, weil man zuerst herausfinden muss, wie das funktioniert und welche Schnittstellen dafür benutzt werden können. Glücklicherweise haben einige Leute bei Microsoft ein (unabhängiges) Open Source projekt gestartet, um verschiedene Aufgaben in der Office 365 Welt einfacher zu erledigen:

Das SharePoint and Office App Model Samples Projekt, kurz “Office AMS”.
Dieses ist auf http://officeams.codeplex.com verfügbar.

image6

Hier finden Entwickler eine Vielzahl von Beispielen und HowTos für verschiedene SharePoint und Office Apps. Dazu gibt es auch eine PowerPoint Dokumentation welche einen Überblick über die Samples gibt, siehe vesku-msdn-blog und Office AMS v2.0 has been released.

Die Schnittstelle

Um SPO Userprofiles zu beschreiben verwenden wir die Office AMS solution Core.UserProfilePropertyUpdater.

Hiermit kann das Webservice von Office 365 SPO User Profiles verwendet werden. Beim Blick in die Dockmentation sieht man, dass das Lesen und beschreiben der User Profile Eigenschaften über ein Webservice userprofileservice.asmx erfolgt.

Dieses Service existiert seit SharePoint 2007 und arbeitet mit einem (eigentlich veralteten) SOAP Webservice. Allerdings sieht es so aus, als ob dieser Weg der einzige ist, siehe hierzu auch Stefan Bauers´s Blogeintrag Bulk update SharePoint Online user profiles . Ich bin auf jeden Fall gespannt, ob diese Schnittstelle in der nächsten Version von SPO noch vorhanden sein wird…

Wie auch immer, die webservice-URL für den Zugriff auf die User Profiles in Office 365 lautet
https://[tenant]-admin.sharepoint.com/_vti_bin/UserProfileService.asmx.

Das Feine bei Verwendung des AMS Samples ist, dass man sich nicht selbst um die Implementierung des SOAP Webservices kümmern muss, der nötige Code ist bereits vorhanden. Natürlich kann man mit dem Debugger die Schritte durch-steppen um nachzusehen, was hinter den Kulissen passiert.

Wichtig: Es gibt keine Synchronisation zurück

Änderungen, die in den SPO User Profiles passieren, überschreiben die Daten dort. Diese User Properties werden jedoch NICHT in das AAD zurückgeschrieben. Benutzer-Eigenschaften wie etwa “workemail” die normalerweise von AAD oder von Exchange Online kommen, können so überschrieben werden.

Starten mit dem UserProfileManager

Zu Beginn wird das Core.UserProfilePropertyUpdater Projekt aus dem Sample geöffnet und angepasst. Der Authentication Context wird angepasst und es wird eine neue Instanz des UserProfileManager für den Office 365 Tenant erzeugt.

UserProfileManager upm = new UserProfileManager();
upm.User = "admin@O365Demo2015.onmicrosoft.com";
upm.Password = GetPassword();
upm.TenantAdminUrl = "https://O365Demo2015-admin.sharepoint.com/";

Wir benötigen einen Office 365 Tenant Administrator um Änderungen an anderen (als dem eigenen) SPO User Profilen durchzuführen.

Lesen von User-Profil Eigenschaften

Zunächst wird das User Profil angegeben, der verändert werden soll. Das Format muss die gesamte Claim-Based Authentication-Information und den User-Login-Namen (UPN) enthalten. Siehe hier  Informationen über das User-Login und alle User Profil Eigenschaften..

string userLoginName = "i:0#.f|membership|m.smith@O365Demo2015.onmicrosoft.com";

Nun wollen wir die Daten für die User Profil Poperties “AboutMe” und “SPS-LastKeywordAdded” erhalten.

Console.Write(String.Format("Value of {0} for {1} :", "AboutMe", userLoginName));
Console.WriteLine(upm.GetPropertyForUser<String>("AboutMe", userLoginName));

Console.Write(String.Format("Value of {0} for {1} :\n", "SPS-LastKeywordAdded", userLoginName));
Console.WriteLine((upm.GetPropertyForUser<DateTime>("SPS-LastKeywordAdded", userLoginName)).ToLongDateString());

Die Ausgabe sieht dann etwa so aus:

image_thumb6

Schreiben von User-Profil Eigenschaften

Beim Schreiben muss zwischen einfachen Strings und komplexen Datentypen unterschieden werden. Im ersten Fall funktioniert das einfach:

upm.SetPropertyForUser<String>("WorkPhone", "005555555", userLoginName);

Um sicherzustellen, dass die so gesetzte Eigenschaften gespeichert wurde, kann sie auch gleich wieder ausgelesen werden:

Console.WriteLine(upm.GetPropertyForUser<String>("WorkPhone", userLoginName));

Setzen wir mit weiteren Feldern wie "WebSite" und "AboutMe" fort. Die Ausgabe sieht dann etwa so aus:

image_thumb9

Recht einfach. Wenn Benutzereigenschaften mehr als eine Information beinhalten, ist es jedoch erfprderlich den Datentyp zu ermitteln. Das passiert durch das lesen des PropertyData Objects um den “complex types” zu erhalten. Hier am Beispiel der eingestellten Sprachen.

UserProfileASMX.PropertyData p = upm.GetPropertyForUser("SPS-MUILanguages", userLoginName);
Console.WriteLine(p.Values[0].Value.ToString());

Das Objekt kann nun verändert und zurückgeschrieben werden.

UserProfileASMX.PropertyData[] pMui = new UserProfileASMX.PropertyData[1];
pMui[0] = new UserProfileASMX.PropertyData();
pMui[0].Name = "SPS-MUILanguages";
pMui[0].Values = new UserProfileASMX.ValueData[1];
pMui[0].Values[0] = new UserProfileASMX.ValueData();
pMui[0].Values[0].Value = "de-AT,en-US";
pMui[0].IsValueChanged = true;
upm.SetPropertyForUser("SPS-MUILanguages", pMui, userLoginName);

Ergebnisse überprüfen

Im Office 365 SharePoint admin center können die Benutzerprofile angezeigt (und geändert) werden. Änderungen sind sofort sichtbar.
https://[tenant]-admin.sharepoint.com/_layouts/15/tenantprofileadmin/ProfMngr.aspx

Die Suche erfolgt etwa nach dem User-Profil-Namen. Wenn das Profil geöffnet wird, öknnte es etwa so aussehen:

image_thumb12

Vergleich zwischen AAD und SPO User Profiles

Wie oben erwähnt, werden Benutzerobjekte (und bestimmte Eigenschaften davon) automatisch zwischen AAD (Office 365) und SPO User Profiles synchronisiert. Jene auf SPO-Seite können wir auch mit unserer App überschreiben. Die folgenden Grafiken zeigen jene Felder, die automatisch aus dem AAD kommen. Zur Erinnerung: Es gibt keinen Weg zurück ins AAD – darum müssten wir uns selbst (mit einer App und der GraphAPI kümmern).

image_thumb15

Weiter unten gibt es dann keine weiteren Mappings mehr…

image_thumb36

Fazit

Wenn die automatische Synchronisation der (21) Felder von AAD nach SPO User Profiles nicht verwendet werden kann oder Daten in Fremdsystemen bestehen, kann das Beschreiben bestimmter User Profile Properties über die /_vti_bin/UserProfileService.asmx Schnittstelle und eine eigene App erfolgen. Die Office AMS Beispiele liefern eine gute Basis dafür.

Eine Liste aller ge-syncten und aller beschreibbaren Felder in SPO User Profiles findet ihr hier.

Viel Spaß mit den Office App Model Samples!

Add comment

  Country flag

biuquote
  • Comment
  • Preview
Loading

Datenschutzhinweis: Sie stimmen durch "Kommentar speichern" der Speicherung Ihrer Angaben durch Microsoft Österreich für die Beantwortung der Anfrage zu. Sie erhalten dadurch keine unerwünschten Werbezusendungen. Ihre Emailadresse wird auf Ihren Wunsch dazu verwendet Sie über neue Kommentare zu informieren.

Microsoft respektiert den Datenschutz. Datenschutz & Cookies


 
    Build2016
    Developer Events

Aktuelle Downloads

Azure Free Trial
 
Visual Studio Downloads
 
Windows Azure Free Trial
Instagram
CodeFest.at on Facebook

Datenschutz & Cookies · Nutzungsbedingungen · Impressum · Markenzeichen
© 2013 Microsoft. Alle Rechte vorbehalten · BlogEngine.NET 2.7.0.0 · Diese Website wird für Microsoft von atwork gehostet.
powered by atwork