Tôi có một dịch vụ WCF Tôi đã tạo ra trong một WebApplication với cấu hình như sau trong web.configBắt DefaultNetworkCredentials đi qua để WCF Service
<service name="RedwebServerManager.WebApplication.DesktopService"
behaviorConfiguration="ServBehave">
<endpoint
address=""
binding="basicHttpBinding"
bindingConfiguration="basicBind"
contract="RedwebServerManager.WebApplication.IDesktopService"/>
</service>
</services>
<bindings>
<basicHttpBinding>
<binding name="basicBind">
<security mode="TransportWithMessageCredential">
<transport clientCredentialType="Windows"/>
</security>
</binding>
</basicHttpBinding>
</bindings>
Dịch vụ này cần thực hiện trong WindowsCredentials trong để có được thông tin trong một cơ sở dữ liệu dựa trên người dùng đã được xác thực. Đây dịch vụ hiện tại có một phương pháp thực hiện một giao diện với các chữ ký sau
[ServiceContract]
public interface IDesktopService
{
/// <summary>
/// Gets the clients.
/// </summary>
/// <returns>IEnumerable<ClientServiceModel>.</returns>
[OperationContract]
IEnumerable<ClientServiceModel> GetClients();
}
Tôi có một ứng dụng Windows Forms được tiêu thụ các dịch vụ WCF và tôi muốn đi qua các thông tin của người dùng hiện bằng cách sử dụng ứng dụng như điều này sẽ tất cả đều ngồi trên miền của chúng tôi. App.config như sau
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_IDesktopService">
<security mode="TransportWithMessageCredential">
<transport clientCredentialType="Windows" proxyCredentialType="Windows"/>
</security>
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="https://redwebservermanager.redweb.network/DesktopService.svc"
binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IDesktopService"
contract="ManagerService.IDesktopService" name="BasicHttpBinding_IDesktopService" />
</client>
</system.serviceModel>
Nếu tôi tự thiết lập các thông tin username và mật khẩu mọi thứ hoạt động một cách chính xác tuy nhiên tôi đã cố gắng
managerService.ClientCredentials.Windows.ClientCredential = CredentialCache.DefaultNetworkCredentials
để tôi có thể vượt qua các chứng chỉ người dùng hiện tại trên nhưng tôi tiếp tục nhận được một lỗi trên các cuộc gọi đến GetClients() mà tên người dùng và mật khẩu không được thiết lập.
Có ai có thể giúp tôi không? Tôi cũng đã thử thêm
[OperationBehavior(Impersonation = ImpersonationOption.Required)]
vào phương pháp nhưng điều này không có sự khác biệt.
Tôi biết điều đó nghe có vẻ ngớ ngẩn, nhưng bạn đã thử ** không đặt ** 'ClientCredential' chút nào. Chúng tôi đang sử dụng 'NetTcpBinding' với bảo mật giao thông và các công trình trên cho chúng tôi. –