ASP.NET для WCF - сквозная безопасность? - PullRequest
2 голосов
/ 11 августа 2010

У меня есть веб-сайт MVC, который расположен поверх службы WCF.Служба WCF также доступна в Интернете с аутентификацией по имени пользователя и паролю с использованием безопасности сообщений и сертификатов.Это настройка и работа.

И веб-сайт, и служба используют одно и то же хранилище членства с использованием API членства.

Пользователь может войти на веб-сайт или в службу с использованием одинаковых учетных данных.,Тем не менее, когда веб-сайт вызывает службу, он должен передать учетные данные текущего пользователя.Я могу получить имя пользователя от

Membership.GetUser().UserName

, но не могу получить пароль!

Есть ли другой способ, по существу, передать учетные данные пользователя веб-сайта в службу?

Любая помощь, высоко ценимая ...

1 Ответ

4 голосов
/ 12 августа 2010

это очень странная архитектура.Зачем аутентифицировать пользователя дважды?Просто установите другую конечную точку (net.pipe) для вашего MVC и избегайте второй аутентификации.Если вам также необходимо знать аутентифицированного пользователя в службе, у вас есть два варианта, зависящих от доверия к вашему приложению MVC:

  1. Отправьте имя пользователя в виде пользовательского заголовка сообщения.Минусы: если хакер обходит вашу аутентификацию, он может позвонить в вашу службу с любым именем пользователя.
  2. Не аутентифицировать пользователя напрямую в MVC.Вместо этого всегда проверяйте подлинность пользователя в WCF и создавайте настраиваемый поставщик членства для MVC, который будет вызывать службу проверки подлинности.Служба также сгенерирует токен для вашего аутентифицированного пользователя, и каждая операция будет проверять этот токен.Минусы: Сложность.

Редактировать: Есть связанный пост с похожим вопросом.Вы можете найти там другие предложения.

...