2012-05-24 9 views
5

Obecnie próbuję użyć TransportWithMessageCredentials i https w moim projekcie wcf. Ustawiłem tryb bezpieczeństwa klienta i serwera = "TransportWithMessageCredential" i clientCredentialType = "Windows".CredentialCache.DefaultNetworkCredentials empty przy użyciu TransportWithMessageCredential

Kiedy idę do uzyskania poświadczeń z CredentialCache.DefaultNetworkCredentials, nazwa użytkownika, hasło i domena są puste.

Czy są jakieś powody? Jeśli będą one zawsze puste, gdzie mogę uzyskać dane uwierzytelniające?

W jaki sposób mogę przekazać zalogowane dane logowania do usługi bez pytania o login?

wiążące Client

<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> 

wiążące

<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> 

kod, aby ustawić nazwę użytkownika i hasło

ChannelFactory<IDiagnostic> test = new ChannelFactory<IDiagnostic>(DIAGNOSTIC_ENDPOINT_NAME); 
test.Credentials.UserName.UserName = "TestUser"; 
test.Credentials.UserName.Password = "User"; 
return test.CreateChannel(); 
+0

Pytasz jak przekazać bieżący użytkownik zalogowany do systemu Windows do usługi? – Jeremy

+0

Tak. Chciałbym przekazać aktualnie zalogowane poświadczenia użytkownika (Windows) do usługi. (redagowałem oryginalny wpis) – user851974

+0

to usługa hostowana w IIS? lub self hosted – EdmundYeung99

Odpowiedz