Поддержание аутентификации между клиентом WCF и службой? (Рабочий процесс предоставлен)
-
11-10-2019 - |
Вопрос
Я хочу сделать:
1) Аутентификация клиента для первого вызова, который он делает для службы WCF, это будет на основе каждого пользователя, а не на основе применения.
2) Проверьте клиент разрешен на звонок.
3) Для последующих вызовов только авторизовать, с аутентификацией уже была сделана на шаге 1 для предыдущего вызова.
ИЛИ ЖЕ
Если клиент подключился к другому экземпляру службы по какой-то причине, или «рукопожатие» сломано для повторной аутентификации.
Я надеюсь, что это имеет смысл, это неявно происходит в WCF с помощью имени пользователя и авторизации и авторизации, или есть ли способ написать что -то настраиваемое? По сути, это для эффективности.
Большое спасибо, Фугу
Решение
Это называется контекстом безопасности (или сеансом безопасности), и это возможно с безопасностью сообщений. Единственное ограничение состоит в том, что сеанс обрабатывается между одним экземпляром службы и клиентским прокси (все вызовы должны быть выполнены в одном экземпляре прокси).
Вот некоторая базовая конфигурация для разрешения контекста безопасности:
<wsHttpBinding>
<binding name="wsHttp">
<security mode="Message">
<message clientCredentialsType="UserName" estabilishSecurityContext="true" />
</security>
</binding>
</wsHttpBinding>
EstabilishSecurityContext
верно по умолчанию. Когда вы включаете это на WS-SecureConversation, используется протокол. Первый вызов передает учетные данные, которые аутентифицируются, а токен безопасности выдается клиенту. Следующие вызовы используют этот токен безопасности для обеспечения идентификации клиента. Такое поведение является прозрачным для разработчика, поэтому вам вообще не приходится иметь дело с токеном.