Mit Verwunderung habe ich Ende der Woche feststellen dürfen, dass die WebServices im Sharepoint recht undurchsichtig sind – für mich zumindest. Ich bin bis jetzt davon ausgegangen, dass die Services nur Ergebnisse liefern, die im Einklang mit den Zugriffsberechtigungen des aktuell anfragenden Users stehen (vorausgesetzt es wurde nicht impersoniert). Leider ist dem nicht so, oder ich habe grundlegend etwas nicht verstanden.
Ein Beispiel:
Die Abfrage von GetWebCollection (webs.asmx) liefert grundsätzliche alle Webs zurück. Ich war der Meinung, dass hier nur die geliefert werden, auf welche auch der aktuelle User Zugriff hat. Leider ist dem nicht so. Es werden alle vorhandenen geliefert, unabhängig davon ob der User die Berechtigung für dieses Web hat oder nicht. Dies fand ich zwar merkwürdig aber nicht schlimm, da ich danach dann geprüft habe, ob der User auf jedes einzelne Web berechtigt ist.
Als nächstes brauchte ich die ContentTypes. Auch hier liefert die webs.asmx eine Funktion (GetContentTypes), welche eine Collection aller vorhandenen ContentTypes liefert. Allerdings bekomme ich bei dieser Abfrage eine 401 Meldung wenn die Abfrage im Context des aktuellen Users ausgeführt wird. Wird die Abfrage impersoniert, und der entsprechende Account hat Berechtigung, dann werden alle ContentTypes geliefert.
Da in meinem Beispiel aber der aktuelle User die ContentType-Gallerie aufrufen kann, über den WebService aber nicht berechtigt ist diese abzufragen, dafür seine Berechtigungen in der GetWebCollection-Abfrage scheinbar völlig ignoriert werden, bin ich ein wenig verwirrt.
Sollte jemand ein wenig Licht ins Dunkle bringen können, würde ich mich freuen. Mein Freund Google hat mich diesbezüglich leider etwas hängen lassen.
b5b6c353-9ff7-49dc-ba05-9bd3f9ebcd91|0|.0