Это зависит от того, насколько сложным и безопасным должно быть ваше решение.WCF также может проверять пользователя на основе членства провайдера.Такой сценарий требует, чтобы вы передавали учетные данные пользователя каждому вызову службы WCF, и в конце вы снова будете аутентифицировать пользователя на каждом уровне.Это не будет работать, поскольку веб-приложение использует учетные данные только для одного запроса, а последующие запросы имеют маркер аутентификации в cookie.Но WCF требует аутентификации каждого звонка.Поэтому при использовании поставщика членства в WCF необходимо сохранять учетные данные пользователя в сеансе на компьютере A. Мне действительно не нравится идея хранить учетные данные клиента где-то в памяти для всей сессии.
Я бы, вероятно, использовал что-то вроде:
Сценарий низкого уровня безопасности:
Вы упомянули, что вы создаете распределенное приложение, поэтому, вероятно, между уровнями должно быть какое-то доверие (машина A - C).Разрешен ли анонимный доступ на машине А?Если нет, может ли ваш уровень на компьютере B доверять уровню на компьютере A, который аутентифицировал пользователей?То же самое с C и B?В таком случае вам вообще не нужно иметь дело с аутентификацией на машинах B и C, а вместо этого используйте безопасность Windows, чтобы разрешить доступ только к учетной записи, на которой запущен клиентский уровень (A - клиент B, B - клиент C).
Сценарий высокой степени безопасности:
Это обычно используется, когда вы хотите избежать ситуации, когда кто-то взламывает сеть на компьютере A, и в этом случае аутентифицируется для всех действий на компьютере B или когдавам нужна авторизация на основе оригинальной идентификационной информации пользователя.
Вы не будете выполнять прямую аутентификацию на компьютере A. Вместо этого пользовательский поставщик членства (или прямая проверка подлинности с помощью форм) на компьютере A вызовет службу аутентификации на компьютере B. Служба создасттокен для "сеанса безопасности".В зависимости от реализации, этот токен может использоваться только для связи между A и B (вы должны сохранить его в сеансе) или для всей связи между клиентом, A и B (вы передадите его в cookie).Машина C доверяет Машине B. Это может быть расширено до полного федеративного сценария.
Это не предотвратит перехват сеанса (прослушивание cookie с токеном между клиентом и машиной A - во избежание этого вам потребуется HTTPS между клиентом и A), но без токена хакер может сделать что-нибудь на вашем компьютере B или C.1019 *