2017-07-01 1 views
0

Wir arbeiten derzeit an einem Erweiterungsdienst, der verwendet wird, um SharePoint-Funktionen zu erweitern.WebAPI zu SOAP Anruf Identitätswechsel

Im Moment haben wir Probleme beim Identitätswechsel des Benutzers. Wir bieten einen REST-Service, der einige SharePoint-SOAP-Methoden aufruft.

Grundlegend UI ruft den REST-Dienst (WebAPI) auf, der Windows-Authentifizierung/WebAPI-Code verwendet, dann imitierte ausführt und dann die SOAP (WCF) -API als imitiertes Benutzer aufrufen sollte.

Was wir in Code tat, ist dies

using (((WindowsIdentity)HttpContext.Current.User.Identity).Impersonate()) 
       { 
        SoapClient service = new SoapClient(); 
        service.ClientCredentials.Windows.AllowedImpersonationLevel = TokenImpersonationLevel.Impersonation; 

.... 

Aktuell können wir die folgende Fehlermeldung:

Die HTTP-Anforderung mit Client-Authentifizierungsschema nicht autorisiert ist 'Verhandeln'. Der Authentifizierungs-Header vom Server empfangen wurde ‚Verhandeln, NTLM

Gibt es einen Trick, dies zu beheben in web.config?

Hoffe, dass Sie mir helfen können ;-) Danke in Forcast.

Mit freundlichen Grüßen. Iki

Antwort

0

Wir haben viel geforscht und es war eigentlich ein infrastrukturelles Problem. Aufgrund der Verbindung zwischen den Diensten "Hoffnung" durch mehrere Gesamtstruktur schlägt die Identitätswechsel fehl.

0

Ich glaube, Sie auch die ClientCredentials.Windows.ClientCredential-System.Net.CredentialCache.DefaultNetworkCredentials

https://msdn.microsoft.com/en-us/library/system.net.credentialcache.defaultnetworkcredentials(v=vs.110).aspx

Die Anmeldeinformationen durch die DefaultNetworkCredentials Eigenschaft nur für NTLM anwendbar ist, verhandeln, und Kerberos-basierte Authentifizierung zurück setzen soll.

Die von DefaultNetworkCredentials zurückgegebenen Anmeldeinformationen stellen die Authentifizierungsanmeldeinformationen für den aktuellen Sicherheitskontext dar, in dem die Anwendung ausgeführt wird. Bei einer clientseitigen Anwendung sind dies normalerweise die Windows-Anmeldeinformationen (Benutzername, Kennwort und Domäne) des Benutzers, der die Anwendung ausführt. Bei ASP.NET-Anwendungen sind die Standard-Netzwerkanmeldeinformationen die Benutzeranmeldeinformationen des angemeldeten Benutzers oder der Benutzer, der imitiert wird.

+0

Hey Subbu, danke für deine Idee. Leider hat es nicht funktioniert. mit (((WindowsIdentity) HttpContext.Current.User.Identity) .Impersonate()) funktioniert für CSOM aber nicht für SOAP –