2010-08-11 3 views
2

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

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

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

Membership.GetUser().UserName 

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

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

Любая помощь очень ценится ...

ответ

4

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

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

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

Смежные вопросы