Поддержание аутентификации между клиентом WCF и службой? (Рабочий процесс предоставлен)

StackOverflow https://stackoverflow.com/questions/4692558

Вопрос

Я хочу сделать:

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

2) Проверьте клиент разрешен на звонок.

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

ИЛИ ЖЕ

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

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

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

Это было полезно?

Решение

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top