Поддерживать аутентификацию между клиентом WCF и сервисом?(рабочий процесс предоставляется) - PullRequest
1 голос
/ 14 января 2011

Что я хочу сделать, это:

1) Аутентифицируйте клиента для первого вызова, который он делает к службе WCF, это будет для каждого пользователя, а не для приложения.

2) Проверьте, авторизован ли клиент для совершения вызова.

3) Для последующих вызовов нужно только авторизоваться, при этом аутентификация уже была выполнена на шаге 1 для предыдущего вызова.

OR

Если клиент по какой-либо причине подключился к другому экземпляру службы или «рукопожатие» прервано для повторной аутентификации.

Надеюсь, это имеет смысл, происходит ли это неявно в WCF с использованием, скажем, аутентификации и авторизации, например, через имя пользователя и пароль, или я / есть способ написать что-то настроенное? По сути это для эффективности.

Большое спасибо, Фуга

1 Ответ

2 голосов
/ 14 января 2011

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

Ниже приведена базовая конфигурация для разрешения контекста безопасности:

<wsHttpBinding>
  <binding name="wsHttp">
    <security mode="Message">
      <message clientCredentialsType="UserName" estabilishSecurityContext="true" />
    </security>
  </binding>
</wsHttpBinding>

EstabilishSecurityContext верно по умолчанию.При включении этого используется протокол WS-SecureConversation.Первый вызов передает учетные данные, которые аутентифицируются, и клиенту выдается токен безопасности.Следующие вызовы используют этот токен безопасности для идентификации клиента.Это поведение прозрачно для разработчика, поэтому вам вообще не нужно иметь дело с токеном.

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