Олицетворять личность клиента в WCF с помощью netTcpBinding - PullRequest
1 голос
/ 10 июня 2009

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

<client>
    <endpoint 
        address="net.tcp://localhost:8081/tcpExample" 
        binding="netTcpBinding"
        bindingConfiguration="myTcpBinding" 
        contract="TestTcp.IHelloTcp"
        name="NetTcpBinding_IHelloTcp">
        <identity>
            <userPrincipalName value="leethax@mydomain.inc" />
        </identity>
    </endpoint>
</client>

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

Ответы [ 2 ]

3 голосов
/ 10 июня 2009

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

  1. Ручное олицетворение (WindowsIdentity.Impersonate)
  2. Декларативное олицетворение (OperationBehavior (Олицетворение = Олицетворение. Требуется))
  3. полное олицетворение (ServiceAuthorizationBehavior.ImpersonateCallerForAllOperations)

Кроме того, убедитесь, что учетной записи, под которой вы работаете (например, leethax@mydomain.inc), предоставлены соответствующие разрешения как на уровне компьютера, так и на уровне домена.

1 голос
/ 10 июня 2009

Хм ... не уверен, что я следую. Поведение по умолчанию для 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 вместе с ее паролем в файлах конфигурации.

...