Выдавать себя за пользователя в WCF от нескольких абонентов
Я использую сервисы WCF, гарантирующие, что имя пользователя / пароль должны быть предоставлены для каждого запроса. Мне нужно использовать один и тот же сервис от многих клиентов, но мне нужно олицетворять вызов, чтобы получить доступ к соответствующим ресурсам для каждого клиента. Когда я вызываю сервис напрямую с клиента, проблем не возникает, потому что я использую для каждого клиента пару UserName/Password, определенную в их web.config. Проблема возникла, когда мне нужно вызвать второй веб-сервис от вызова до первого с использованием той же идентификационной информации. Этот второй веб-сервис требует имя пользователя / пароль, но я знаю только, кто является вызывающим абонентом (имя пользователя), но не пароль.
Как я могу выдать себя за этот второй звонок, не зная пароля для соответствующего имени пользователя?
РЕДАКТИРОВАТЬ: приложение (веб-приложения и службы) работает в среде общего хостинга, где я не могу использовать проверку подлинности Windows для настройки Kerberos для делегирования. Я определил UserNameValidator для обработки при каждом вызове пары UserName/Password для пользовательской базы данных SQLServer. Более того, предполагаемые клиенты этого приложения будут использовать его из Интернета, не требуя учетной записи Windows, потому что мне нужна более гибкая схема аутентификации на основе SQL.
2 ответа
Вам нужно рассмотреть использование Kerberos для обработки передачи проверки подлинности другим службам из вашей первой службы WCF.
Вы взглянули на декларативные параметры безопасности? Связанная статья Ювала Лоуи включает также сценарий интернет-приложения.