2012-03-27 4 views
0

Ich rufe die SharePoint 2010-REST/ODATA-API auf und standardmäßig verwendet der Datenkontext DefaultCredentials, was wirklich der angemeldete Benutzer meiner Asp.Net-Anwendung ist. Wenn ich keine DefaultCredentials an den Kontext angehängt habe, bekomme ich 401 Unauthorized.Sharepoint ODATA-API und Authentifizierung über Dienstkonto

Ich frage mich, wie man SharePoint API während der Verwendung der Application Pool-Anmeldeinformationen aufrufen? Ich versuche, dem Sicherheitsansatz des vertrauenswürdigen Systems zu folgen. Andernfalls muss die SharePoint-Site ODATA-Zugriff gewähren, und bestimmte Listen müssen im Prinzip für alle Benutzer schreibbar sein (gak!).

Zum Beispiel würde ich bei einer SQL-Verbindung einfach "Integrated Security = true" setzen, um die Anmeldedaten des Anwendungspools zu verwenden.

Antwort

0

Bin ich richtig, dass Sie eine ASP.NET-Anwendung auf anderen als den SharePoint-Server ausführen? (Außerhalb der Farm; nur eine Maschine mit IIS und ASP.NET.) Wenn Ihr ASP.NET-Anwendungspool unter denselben Benutzer wie Ihre SharePoint-Webanwendung ausgeführt wird, können Sie den Code Ihres Handlers oder Ihrer Seite vorübergehend für die Anwendung imitieren Pool-Benutzer und verwenden Sie die default network credentials:

using (HostingEnvironment.Impersonate()) { 
    ICredentials credentials = CredentialCache.DefaultNetworkCredentials; 
    // ... use the credentials 
} 

Wenn Sie von einem Konfigurationsanmeldeinformationen (Name und Passwort) des Anwendungspools Benutzer kennen, können Sie die HTTP-Anforderung machen sie direkt mit:

ICredentials credentials = new NetworkCredential("user_name", "password"); 
// ... use the credentials 

- - Ferda