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

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

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

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

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

OR

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

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

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


person Fugu    schedule 14.01.2011    source источник
comment
Где вы размещаете свои службы WCF? И какой тип аутентификации вы используете; Винда, Формы?   -  person bic    schedule 14.01.2011
comment
Что вы подразумеваете под предоставленным рабочим процессом? Служба WCF создана с использованием WF (рабочий процесс Windows)? Если да, то это WF 3 или WF 4?   -  person TrueWill    schedule 14.01.2011


Ответы (1)


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

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

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

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

person Ladislav Mrnka    schedule 14.01.2011