2009-06-10 4 views
1

Возможно ли олицетворять личность клиента при вызове операции конечной точки netTcp через конфигурации? Существует раздел в клиенте конфигурации WCF, как показано ниже:Выдача удостоверения личности клиента в WCF с netTcpBinding

<client> 
    <endpoint 
     address="net.tcp://localhost:8081/tcpExample" 
     binding="netTcpBinding" 
     bindingConfiguration="myTcpBinding" 
     contract="TestTcp.IHelloTcp" 
     name="NetTcpBinding_IHelloTcp"> 
     <identity> 
      <userPrincipalName value="[email protected]" /> 
     </identity> 
    </endpoint> 
</client> 

Мой клиент не терпит неудачу, похоже, личность прикрепленным к клиенту, вошедшего в систему пользователя, то есть меня.

+0

Вы звоните на другой сервер с одного вашего хостинга вашего wcf-сервиса? Если это так, вы можете испытывать радость делегирования. – Will

ответ

1

HMm ... не уверен, что я следую. По умолчанию для netTcpBinding используется использование учетных данных Windows. текущая учетная запись Windows используется для учетных данных службы.

Это по умолчанию прямо из коробки.

Если вы хотите олицетворять кого-то другим пользователем, нет, вы не можете сделать это в конфигурации - вам нужно сделать это в коде. Простите, это единственный путь.

MyServiceClient client = new MyServiceClient(); 
client.ClientCredentials.Windows.ClientCredential.Domain = domain; 
client.ClientCredentials.Windows.ClientCredential.UserName = username; 
client.ClientCredentials.Windows.ClientCredential.Password = password; 

Единственный способ указать другого пользователя в конфигурации - использовать сертификат, который определяет другую учетную запись пользователя, которая будет использоваться. Вы не можете настроить прямую учетную запись пользователя Windows вместе со своим паролем в своих конфигурационных файлах.

3

Вы действительно есть три варианта:

  1. Руководство олицетворения (WindowsIdentity.Impersonate)
  2. декларативного олицетворение (OperationBehavior (олицетворения = Impersonation.Required))
  3. Полное перевоплощение (ServiceAuthorizationBehavior.ImpersonateCallerForAllOperations)

A Кроме того, убедитесь, что учетная запись, на которой выполняется ваша служба (т. [email protected]) предоставляется надлежащие разрешения как на уровне машины, так и на уровне домена.

Смежные вопросы