Ich benutze einen von mir erstellten Dienst, wenn sowohl der Host als auch der Client auf der gleichen Domäne arbeiten, funktioniert alles einwandfrei. Wenn ich die Client-Anwendung auf den Webserver in der DMZ veröffentlichen Ich bin den folgenden Fehler erhalten:WCF Die SSPI-Aushandlung (Security Support Provider Interface) ist fehlgeschlagen
SOAP security negotiation with 'http://10.0.0.14:3790/Bullfrog/QBService/QBService' for
target 'http://10.0.0.14:3790/Bullfrog/QBService/QBService' failed. See inner exception
for more details.The Security Support Provider Interface (SSPI) negotiation failed.
Hier ist mein Service Haupt wo ich den Dienst
Uri baseAddress = new Uri("Http://10.0.0.14:3790/Bullfrog/QBService");
ServiceHost selfHost = new ServiceHost(typeof(QBService), baseAddress);
try
{
selfHost.AddServiceEndpoint(
typeof(IQBService),
new WSHttpBinding(),
"QBService");
ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
smb.HttpGetEnabled = true;
selfHost.Description.Behaviors.Add(smb);
selfHost.Open();
Console.WriteLine("The service is ready");
}
catch (CommunicationException ce)
{
//log.Error(ce.Message, ce);
Console.WriteLine(ce.Message, ce);
selfHost.Abort();
}
und hier eingestellt ist die Config Abschnitt auf meinem Client
<system.serviceModel>
<bindings>
<wsHttpBinding>
<binding name="WSHttpBinding_IQBService" closeTimeout="00:01:00"
openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard"
maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true"
allowCookies="false">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<reliableSession ordered="true" inactivityTimeout="00:10:00"
enabled="false" />
<security mode="Message">
<transport clientCredentialType="Windows" proxyCredentialType="None"
realm="" />
<message clientCredentialType="Windows" negotiateServiceCredential="true"
algorithmSuite="Default" />
</security>
</binding>
</wsHttpBinding>
</bindings>
<client>
<endpoint address="http://10.0.0.14:3790/Bullfrog/QBService/QBService"
binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_IQBService"
contract="IQBService" name="WSHttpBinding_IQBService">
<identity>
<userPrincipalName value="[email protected]" />
</identity>
</endpoint>
</client>
ich bin sicher, dass die Problem ist, weil es Windows-Authentifizierung verwendet. Irgendwelche Ideen? Danke!
Ich bin nicht 100% sicher, also posten ich dies nicht als eine Antwort, aber IMO Windows-Authentifizierung ist nur möglich, wenn sowohl Client als auch Server in der gleichen Domäne oder in vertrauenswürdigen Domänen sind. Übrigens. Wenn sowohl das interne Netzwerk als auch die DMZ Teil Ihrer Unternehmensinfrastruktur sind, warum haben Sie sich für WsHttpBinding mit Nachrichtensicherheit entschieden? Es ist die langsamste Wahl. –
Wenn sowohl das interne Netzwerk als auch die DMZ Teil Ihrer Infrastruktur sind Warum haben Sie WsHttpBinding mit Nachrichtensicherheit gewählt? - weil ich keine andere Art kenne :) Was soll ich verwenden? Wie bereits erwähnt, bin ich sicher, dass die Windows-Authentifizierung das Problem verursacht. Was muss ich stattdessen verwenden? Danke! – twal