Ich habe einen WCF-Dienst, der in IIS 7.0 gehostet wird und Datenbankabfragen ausführen muss. Um die richtigen Berechtigungen zu erhalten, stelle ich mich innerhalb des Dienstes wie folgt vor:
Wenn ich versuche, eine Verbindung herzustellen und meine Abfrage auszuführen, bekomme ich Folgendes:
%Vor%Setzt Ihr WCF-Client die erforderliche "zulässige Identitätswechselebene" fest:
%Vor%Standardmäßig ist dies auf Identifikation eingestellt, wenn nichts explizit angegeben ist. Weitere Informationen finden Sie in diesem Blogpost .
Danke Leute, Ich habe es gelöst, indem ich das XML unter der Deklaration von:
gelesen habe %Vor%es funktionierte nur, wenn ich das XML direkt von der WCFService Klasse las.
Hmmm ... Ich weiß es nicht. Allerdings könnten Sie die DLL frühzeitig laden. Da Sie IIS verwenden, wäre dies vermutlich in Ihrer global.asax - etwas wie das Erstellen und Wegwerfen eines TransactionScope sollte die Aufgabe erledigen ...
Nachdem Sie mit dieser Lösung experimentiert haben, besteht die einfachste Lösung für von IIS gehostete Services darin, Ihren Anwendungspool mit der Identität eines Domänenbenutzers auszuführen, der über die erforderlichen Berechtigungen verfügt. Es gibt wahrscheinlich Probleme in Bezug auf Sicherheit, aber für unsere Zwecke ist es gut genug. Wir können die Berechtigungen für diesen Benutzer einschränken, aber alles funktioniert, ohne in Kerberos, Identitätswechsel, Delegation und die Geheimnisse von AD zu geraten.
Danke huseyint. Ich kämpfe seit anderthalb Tagen gegen diesen. Hier sind einige Sachen, die mich eine Menge Zeit gerettet hätten. Also hoffentlich wird es jemand anderen Zeit sparen. Ich hatte Probleme mit der SQLConnection und der Identitätswechsel, der einen Registrierungszugriff verweigert, wurde mithilfe der Transportsicherheit verweigert. Ich habe sogar versucht, transportwithmessagecredential zu verwenden. Innerhalb von procmon bekam ich "Bad Impersonation". Meine Konfiguration ist In IIS 7, virtuelles Verzeichnis, ist nur die Windows-Authentifizierung aktiviert und die Kernelmodusauthentifizierung wurde deaktiviert. Grundeinstellungen Ich habe es so eingerichtet, dass es die Pass-Through-Authentifizierung verwendet.
Service-Konfiguration -
%Vor%und der Kunde
%Vor%Dieser hat mein Problem gelöst.
Klicken Sie mit der rechten Maustaste auf Visual Studio (je nachdem, welche Version Sie verwenden) Eigenschaften Wählen Sie die Registerkarte Kompatibilität Füllen Sie das Kontrollkästchen "Dieses Programm als Administrator ausführen" aus. Öffnen Sie das Projekt vom Speicherort der Datei Führen Sie die Anwendung aus
Tags und Links wcf .net sql-server security transactions