Tôi đang sử dụng dịch vụ wcf mà tôi đã tạo, khi cả máy lưu trữ và máy khách nằm trên cùng một miền, mọi thứ hoạt động tốt. Khi tôi xuất bản ứng dụng máy khách đến máy chủ web trong DMZ Tôi nhận được lỗi sau:WCF Thỏa thuận Giao diện Nhà cung cấp Hỗ trợ Bảo mật (SSPI) không thành công
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.
Đây là dịch vụ của tôi chính nơi tôi thiết lập dịch vụ
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();
}
và đây là cấu hình phần trên thân chủ tôi
<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>
tôi chắc chắn các vấn đề là bởi vì nó đang sử dụng xác thực cửa sổ. Bất kỳ ý tưởng? Cảm ơn bạn!
Tôi không chắc chắn 100% vì vậy tôi không đăng câu trả lời này nhưng xác thực Windows IMO chỉ có thể thực hiện được nếu cả máy khách và máy chủ nằm trong cùng miền hoặc trong miền đáng tin cậy. Btw. nếu cả mạng nội bộ và DMZ là một phần của cơ sở hạ tầng doanh nghiệp của bạn thì tại sao bạn chọn WsHttpBinding với bảo mật thư? Đó là sự lựa chọn chậm nhất. –
nếu cả hai mạng nội bộ và DMZ là một phần của cơ sở hạ tầng doanh nghiệp của bạn tại sao bạn chọn WsHttpBinding với bảo mật thư? - bởi vì tôi không biết bất kỳ cách nào khác :) Tôi nên sử dụng? Như đã đề cập, tôi chắc chắn rằng đó là xác thực cửa sổ đang gây ra sự cố. Vậy tôi cần phải sử dụng cái gì? Cảm ơn! – twal