2012-05-24 13 views
5

Attualmente sto cercando di utilizzare TransportWithMessageCredentials e https sul mio progetto wcf. Ho impostato sia il client che il server in modalità di sicurezza = "TransportWithMessageCredential" e il clientCredentialType = "Windows".CredentialCache.DefaultNetworkCredentials vuoto quando si utilizza TransportWithMessageCredential

Quando vado a ottenere le credenziali da CredentialCache.DefaultNetworkCredentials, il nome utente, la password e il dominio sono tutti vuoti.

Qualsiasi motivo per cui questi sarebbero vuoti? Se saranno sempre vuoti, dove riceverò le credenziali?

Come passare le credenziali dell'utente connesso al servizio senza richiedere l'accesso?

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

vincolante

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

codice per impostare il nome utente e la password

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

Stai chiedendo come passare l'utente corrente connesso a Windows per il servizio? – Jeremy

+0

Sì. Vorrei passare le credenziali dell'utente attualmente loggate (windows) al servizio. (ho modificato il post originale) – user851974

+0

è il servizio ospitato in IIS? o self hosted – EdmundYeung99

risposta

Problemi correlati