Eins der bekanntesten Konstrukte, das jeder SharePoint Entwickler täglich braucht ist vermutlich SPSecurity.RunWithElevatedPriviliges( () => {…});
Der Aufruf dient dazu einen Codeblock unter erhöhten Rechten auszuführen, was oft dienlich ist, da natürlich jeglicher Code sonst unter den Rechten des aktuell angemeldeten Users ausgeführt wird, welcher meist nur eingeschränkte Rechte hat.
Was tut RunWithElevatedPrivileges() eigentlich?
Es führt den übergebenen Code unter dem Account “System Account” aus. Dieser User ist ein SharePoint internes Benutzerkonto welches sozusagen im “God-Mode” arbeitet und alles darf.
So weit, so gut. Doch in der Praxis sieht das anders aus. Oft treten, trotz dem Aufruf, Exceptions auf, welche besagen, dass man nicht genügend Rechte hat eine Operation auszuführen. Wie kann das sein?
Der “System Account” wird auf ein echtes AD Benutzerkonto gemapped, nämlich standardmässig auf die Application Pool Identity. Dieses Konto kann man in IIS Manager einsehen und einstellen. Siehe Abbildung 1 & 2
Abbildung 1 – Application Pool / Advanced Settings
Abbildung 2 – Advanced Settings Dialog mit Application Pool Identity
Um das Pseudo-Konto SHAREPOINT\system auf ein selbst definiertes AD Konto zu mappen muss lediglich in der Zentraladministration unter Application Management –> Manage Web Applications –> User Policy ein Konto editiert oder neu hinzugefügt werden mit der Einstellung “Account operates as System” und “Full Control”.

Hoffentlich lösen sich mit diesem kurzen Tipp einige der Dinge, auf die man im täglichen Entwickeln mit SharePoint stösst.

Andreas Aschauer