доступ к идентификатору клиента wcf на сервисе - PullRequest
1 голос
/ 05 сентября 2011

После пары обучающих программ WCF я мог бы разработать клиент-серверное приложение WCF, и приложения-службы, и клиентские приложения являются приложениями Windows Forms.Я могу позвонить в службу, используя каждого клиента, указав имя пользователя и пароль.Мои приложения службы WCF также отображают все подключенные клиенты с их именем пользователя.Но, когда несколько клиентов отправляют запрос на обслуживание, я не могу определить, какой пользователь вызвал метод.Это важно, поскольку мое приложение, как и любое обычное приложение ASP.NET, имеет свой собственный сеанс для каждой клиентской обработки.Каждый пользователь имеет свою собственную идентификацию и свой собственный домен приложения.

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

Как реализовать этот сценарий в приложении клиент / сервер WCF?

Любая помощь, пожалуйста ??

Спасибо


Спасибо за ваш предыдущий ответ.Это действительно полезно для меня.Теперь, что, если я хочу использовать пользовательскую аутентификацию, используя имя пользователя и пароль.Предположим, у меня есть 50 клиентов с правильными именем пользователя и паролем.Как я могу получить удостоверение личности клиента (из этих 50), который вызывает метод обслуживания в определенный момент времени?

Спасибо

1 Ответ

2 голосов
/ 06 сентября 2011

В своем коде на стороне сервера вы должны быть в состоянии извлечь личность вызывающего абонента из контекста безопасности - что-то вроде:

if(ServiceSecurityContext.Current != null &&
   ServiceSecurityContext.Current.PrimaryIdentity != null)
{
   string userName = ServiceSecurityContext.Current.PrimaryIdentity.Name;
}

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...