我正在嘗試在我的wcf項目中使用TransportWithMessageCredentials和https。我已經設置了客戶端和服務器安全模式=「TransportWithMessageCredential」和clientCredentialType =「Windows」。CredentialCache.DefaultNetworkCredentials在使用TransportWithMessageCredential時爲空
當我從CredentialCache.DefaultNetworkCredentials獲取憑據時,用戶名,密碼和域都是空的。
爲什麼這些會是空的任何理由?如果他們永遠是空的,我會在哪裏獲得憑據通過?
如何將登錄的用戶憑據傳遞給服務而不提示他們進行登錄?
客戶端結合
<basicHttpBinding>
<binding name="ClientHttpEndpoint" closeTimeout="00:01:00"
openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:02:00"
allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
maxBufferSize="4194304" maxBufferPoolSize="524288" maxReceivedMessageSize="4194304"
messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
useDefaultWebProxy="true">
<security mode="TransportWithMessageCredential">
<transport clientCredentialType="Windows" proxyCredentialType="None" realm="" />
<message clientCredentialType="UserName" algorithmSuite="Default" />
</security>
</binding>
</basicHttpBinding>
服務器結合
<basicHttpBinding>
<binding name="WindowsTransportCredentialBinding" maxBufferSize="524288"maxReceivedMessageSize="524288">
<readerQuotas maxDepth="128" maxStringContentLength="1048576" />
<security mode="TransportWithMessageCredential">
<transport clientCredentialType="Windows" />
</security>
</binding>
</basicHttpBinding>
...
<service name="Test.DiagnosticService">
<endpoint binding="basicHttpBinding" bindingConfiguration="WindowsTransportCredentialBinding" name="ClientDiagnosticEndpoint" contract="Test.IDiagnostic" />
</service>
代碼來設置用戶名和密碼
ChannelFactory<IDiagnostic> test = new ChannelFactory<IDiagnostic>(DIAGNOSTIC_ENDPOINT_NAME);
test.Credentials.UserName.UserName = "TestUser";
test.Credentials.UserName.Password = "User";
return test.CreateChannel();
您是否問過如何將當前登錄到Windows的用戶傳遞給該服務? – Jeremy
是的。我想將當前登錄的用戶憑據(窗口)傳遞給服務。 (我編輯了原始文章) – user851974
是在IIS中託管的服務?或自己託管 – EdmundYeung99