SharePointCommunity
Die deutschsprachige Community für SharePoint, Microsoft 365, Teams, Yammer und mit Azure

Sponsored by

Willkommen im Forum Archiv.
Einträge sind hier nicht mehr möglich, aber der Bestand von 12 Jahren SharePoint-Wissen ist hier recherchierbar.




SharePoint, WebServices und Windows Credentials des angemeldeten Users

Geprüfte Antwort Dieser Beitrag hat 1 Antworten

Ohne Rang
38 Beiträge
Christoph Distefano erstellt 18 Jan. 2010 17:22
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo zusammen.

Ich habe Probleme, mich bei einem WCF WebService (kein SharePoint WebService!) zu authentifizieren, den ich innerhalb eines SharePoint WebParts aufrufe.

Code wie folgt:
========================
MyWebService ws = null;
ws = new MyWebService("endpointName");
ws.Open();

========================

Fehlermeldung:
System.ServiceModel.Security.SecurityNegotiationException: "The caller was not authenticated by the service."
InnerException:
System.ServiceModel.FaultException: "The request for security token could not be satisfied because authentication failed."



Setze ich feste Windows Credentials, funktioniert das Ganze auch im SharePoint WebPart.
Code also wie folgt funktioniert im SharePoint WebPart:

========================
MyWebService ws = null;
ws = new MyWebService("endpointName");
ws.ClientCredentials.Windows.ClientCredential.UserName = "domain\\username";
ws.ClientCredentials.Windows.ClientCredential.Password = "password";
ws.Open();

========================

Nun bin ich auf die Idee gekommen, die Windows Credentials des am SharePoint System angemeldeten Users an den WebService weiter zu geben.
Dies funktioniert aber weder mit
ws.ClientCredentials.Windows.ClientCredential = System.Net.CredentialCache.DefaultNetworkCredentials;
noch mit
ws.ClientCredentials.Windows.ClientCredential = (System.Net.NetworkCredentials)System.Net.CredentialCache.DefaultCredentials;

Auch habe ich keine Möglichkeit gefunden, über "Microsoft.SharePoint.SPContext.Current.Web.CurrentUser" an die Windows Credentials des Users zu kommen, um so den User am WebService zu authentifizieren.

Gibt es eine Möglichkeit, einem WebService die Credentials des derzeitig angemeldeten Users mitzugeben? Ich dachte, sobald ich die web.Config so eingerichtet hätte, würde es laufen:
    <authentication mode="Windows" />
    <identity impersonate="true" />

   

Jegliche Ideen sind willkommen!

Danke im Voraus,
Christoph

Alle Antworten

Ohne Rang
38 Beiträge
Christoph Distefano Als Antwort am 19 Jan. 2010 17:36
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ha, nun hab ich die Lösung (also keine direkte Lösung, eher eine Problemerklärung) selbst gefunden.

Die folgenden Artikel beschreiben es sehr schön:

http://msdn.microsoft.com/en-us/library/dd583124%28office.11%29.aspx

http://ablog.apress.com/?p=1127

 

Aufgrund der Verwendung von NTLM ist es nicht möglich, Credentials an den externen WebService weiterzugeben. Dazu wäre dann Kerberos notwendig, da hier mit dem Ticketsystem die Credentials des Users weitergegeben werden können. Schaut man sich NTLM bisschen genauer an, macht das ganze auch Sinn.

 

Gruß

Christoph