Home All Groups Group Topic Archive Search About

Secure TcpClientChannel with errors on XP SP2

Author
14 Jun 2006 12:13 PM
Steven Taylor
I am trying to use secure TCP remoting between 2 XP SP2 machines which
are not joined to the same domain but constantly see the exception "The
server has rejected the client credentials.". I have been able to get
the same piece of code to work from XP SP2 --> W2K and W3K but cannot
on XP Pro or Home both running SP2. Below is the configuration files
for the Client and Server

Server
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.runtime.remoting>
    <application>
      <service>
        <wellknown mode="SingleCall"
type="LeastPrivilege.Demos.SecureRemoting.ImplementationClass, Server"
objectUri="server.rem" />
      </service>
      <channels>
        <channel ref="tcp" secure="true" port="8080" impersonate="true"
protectionLevel="EncryptAndSign"/>
      </channels>
    </application>
  </system.runtime.remoting>
</configuration>

Client
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <system.runtime.remoting>
        <application>
            <channels>
                <channel
                  ref="tcp"
                  secure="true"
                  tokenImpersonationLevel="impersonation"
                  protectionLevel="EncryptAndSign"
                  servicePrincipalName=""
                  domain="XPMACHINE"
                  username="RemoteUser"
                  password="password"
                  />
            </channels>
        </application>
    </system.runtime.remoting>
</configuration>

I have created both the channels with ensureSecurity set to false but I
am absolutely stumped by this error.

Below is the Stack Dump

System.Security.Authentication.InvalidCredentialException was unhandled
  Message="The server has rejected the client credentials."
  Source="mscorlib"
  StackTrace:
    Server stack trace:
       at
System.Net.Security.NegoState.ProcessAuthentication(LazyAsyncResult
lazyResult)
       at
System.Net.Security.NegotiateStream.AuthenticateAsClient(NetworkCredential
credential, String targetName, ProtectionLevel requiredProtectionLevel,
TokenImpersonationLevel allowedImpersonationLevel)
       at
System.Runtime.Remoting.Channels.Tcp.TcpClientTransportSink.CreateAuthenticatedStream(Stream
netStream, String machinePortAndSid)
       at
System.Runtime.Remoting.Channels.Tcp.TcpClientTransportSink.CreateSocketHandler(Socket
socket, SocketCache socketCache, String machinePortAndSid)
       at
System.Runtime.Remoting.Channels.SocketCache.CreateSocketHandler(Socket
socket, String machineAndPort)
       at
System.Runtime.Remoting.Channels.RemoteConnection.CreateNewSocket(EndPoint
ipEndPoint)
       at
System.Runtime.Remoting.Channels.RemoteConnection.CreateNewSocket()
       at System.Runtime.Remoting.Channels.SocketCache.GetSocket(String
machinePortAndSid, Boolean openNew)
       at
System.Runtime.Remoting.Channels.Tcp.TcpClientTransportSink.SendRequestWithRetry(IMessage
msg, ITransportHeaders requestHeaders, Stream requestStream)
       at
System.Runtime.Remoting.Channels.Tcp.TcpClientTransportSink.ProcessMessage(IMessage
msg, ITransportHeaders requestHeaders, Stream requestStream,
ITransportHeaders& responseHeaders, Stream& responseStream)
       at
System.Runtime.Remoting.Channels.BinaryClientFormatterSink.SyncProcessMessage(IMessage
msg)
    Exception rethrown at [0]:
       at
System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage
reqMsg, IMessage retMsg)
       at
System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData&
msgData, Int32 type)
       at
LeastPrivilege.Demos.SecureRemoting.ISharedInterface.HelloWorld(String
input)
       at LeastPrivilege.Demos.SecureRemoting.ClientApp.Main() in
C:\Documents and
Settings\steven\Desktop\SecureRemoting\Client\Client.cs:line 53
       at System.AppDomain.nExecuteAssembly(Assembly assembly, String[]
args)
       at System.AppDomain.ExecuteAssembly(String assemblyFile,
Evidence assemblySecurity, String[] args)
       at
Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
       at System.Threading.ThreadHelper.ThreadStart_Context(Object
state)
       at System.Threading.ExecutionContext.Run(ExecutionContext
executionContext, ContextCallback callback, Object state)
       at System.Threading.ThreadHelper.ThreadStart()


Any help would really be appreciated
Steven

AddThis Social Bookmark Button