Sharepoint 2007 NTLM Problem mit ASP.NET Web App gehostet auf Sharepoint-Server
-
06-07-2019 - |
Frage
Ich bin Hosting eine ASP.NET Web-Anwendung auf einer Sharepoint 2007-Box, die einen Web-Service-Aufruf zu Sharepoint macht ein Dokument Standort abgerufen wird (genauer gesagt, die GetListItems Methode).
Der Dienst wird mit geben Anmeldeinformationen eines gültigen Sharepoint-Konto mit den entsprechenden Berechtigungen verbraucht wird.
ListServiceWrapper listService = new ListServiceWrapper();
/*Pass credentials to service call object*/
listService.Credentials = new NetworkCredential(spUserName, spPassword, spDomain);
/*Set the Url property of the service for the path to a subsite.*/
listService.Url = ConfigurationManager.AppSettings.Get("rootSite") + "/_vti_bin/lists.asmx";
Wenn die Web-App läuft lokal auf meinem Entwicklungsfeld (Ich bin ein Sharepoint-Benutzer auf der gleichen Domain), funktioniert der Service-Aufruf groß. Wenn Sie mit dem Sharepoint-Box zum Einsatz, die Anwendung zurückgibt:
Die Anforderung ist fehlgeschlagen mit HTTP-Status 401:. Unerlaubte
Wir haben versucht, die App-Pool Benutzer des Web-App auf der Sharepoint-Box zu einem autorisierten Sharepoint Benutzern zu ändern, haben aber noch kein Glück gehabt. Ich denke, wenn wir die Sharepoint-Authentifizierung Kerberos statt NTLM geändert, würde es das Problem lösen. Leider ist das nicht eine Option hier. Dies hat möglicherweise etwas mit dem NLTM Double-Hop-Problem zu tun?
Lösung
Ja, das ist das doppelte Hop-Problem im Zusammenhang.
In NTLM, Sie sind nicht auf Remote-Dienste zur Authentifizierung erlaubt. Wie Sie gesagt haben, müssen Sie die Kerberos-Anmeldeinformationen an andere Dienste übertragen.
Optionen können Sie versuchen:
- Wechseln Sie zu Kerberos. Dies ist die einzig richtige Lösung, aber es ist nicht so einfach, wie Sie alle SPN erstellen, müssen werden und sicher sein, Port 88 geöffnet ist.
- Installieren Sie sind ASP.Net-Anwendung in der Sharepoint-Feld und aktivieren DisableLoopbackCheck
- ein Dienstkonto verwenden, um Sharepoint zu protokollieren. In diesem Fall wird Sharepoint nicht unter dem Benutzerkonto ausgeführt werden, so dass Sie die Sicherheit umgehen müssen sie