Laden...

WCF Service in IIS7 hosten mit HTTPS und WindowsAuthentifizierung

Erstellt von tkrasinger vor 14 Jahren Letzter Beitrag vor 14 Jahren 7.526 Views
T
tkrasinger Themenstarter:in
574 Beiträge seit 2008
vor 14 Jahren
WCF Service in IIS7 hosten mit HTTPS und WindowsAuthentifizierung

Hat jemand von euch ein Beispiel wie man im IIS 7 ein WCF Service mit HTTPS und WindowsAuth hosted?

Ich komm einfach nicht weiter, da ich jedesmal vom Client nur bekomme, dass kein Endpunkt an https://servername:port/MyService.svc existiert. Am Server selbst kann ich nichts feststellen.
Die WebSeite läuft bereits unter https, ich hab eine Default.aspx drinnen die ganz normal läuft.

821 Beiträge seit 2009
vor 14 Jahren

bekommst du denn zu einem normalen http-Webservice einen Connect ?

T
tkrasinger Themenstarter:in
574 Beiträge seit 2008
vor 14 Jahren

Also ganz normal ein WCF-Service im IIS7 hosten und verbinden krieg ich hin. Ich hab das ganze mit dem WCFTestClient der beim VS08 dabei ist getestet.

Wenn ich nun allerdings meine TestMethode für die DB ausprobiere, hab ich noch immer das Problem (wie auch beim WinService), dass sich das WCFService nun mit dem lokalen Systemkonto (vom Server) an der DB anmelden will. Was natürlich nicht geht, weil der DB-Server natürlich ein anderer ist (Client != WebServer != DBServer).

Also dreh ich die Windows-Auth am IIS auf und geb das Attribut

[OperationBehavior(Impersonation=ImpersonationOption.Required)] 

auf meine TestMethode.

Fahr den WCFTestClient wieder hoch, drück Invoke auf meiner TestMethode und das Resultat ist das selbe wie im WinService:

Der Typeninitialisierer für "Microsoft.Practices.EnterpriseLibrary.Data.Database" hat eine Ausnahme verursacht.

Server stack trace: 
   bei System.ServiceModel.Channels.ServiceChannel.ThrowIfFaultUnderstood(
Message reply, MessageFault fault, String action, MessageVersion version, FaultConverter faultConverter)
   bei System.ServiceModel.Channels.ServiceChannel.HandleReply(
ProxyOperationRuntime operation, ProxyRpc& rpc)
   bei System.ServiceModel.Channels.ServiceChannel.Call(
String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
   bei System.ServiceModel.Channels.ServiceChannel.Call(
String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs)
   bei System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(
IMethodCallMessage methodCall, ProxyOperationRuntime operation)
   bei System.ServiceModel.Channels.ServiceChannelProxy.Invoke(
IMessage message)

Exception rethrown at [0]: 
   bei System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(
IMessage reqMsg, IMessage retMsg)
   bei System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(
MessageData& msgData, Int32 type)
   bei IDataService.TestConnection()
   bei Client.TestConnection()

T
tkrasinger Themenstarter:in
574 Beiträge seit 2008
vor 14 Jahren

Ich glaub ich renn da irgendwie in ein relativ bekanntes Problem rein.

Das Impersonate="true" im web.config funktioniert zwar und wenn ich den aktuellen User abfrage, wird auch mein Username geliefert, aber gegen die DB geht er nicht mit meinem User ...

T
tkrasinger Themenstarter:in
574 Beiträge seit 2008
vor 14 Jahren

Also ich hab die DB mal auf den WebServer verschoben, da ja der Double Hop mit den Credentials nicht geht.

Jetzt bin ich wieder bei meinem ursprünglichem Problem. Sobald ich die Anonyme Authentifizierung ausschalte, komm ich nicht mehr zum Service:

"Die Sicherheitseinstellungen für diesen Dienst erfordern die Anonymous-Authentifizierung. Diese ist jedoch nicht für die IIS-Anwendung aktiviert, die diesen Dienst hostet."

bzw:

"Die HTTP-Anforderung ist beim Clientauthentifizierungsschema "Anonymous" nicht autorisiert. Vom Server wurde der Authentifizierungsheader "Negotiate,NTLM" empfangen."