Защита вызова службы WCF между серверными приложениями с помощью Federated Security
У меня есть два сайта MVC, которые используют один и тот же STS для аутентификации. Мне нужно создать службу WCF как часть одного из сайтов, которая позволяет другому сайту получать данные.
Эти сайты могут находиться на разных компьютерах, доступных через Интернет (хотя в настоящее время они находятся на одном компьютере), и к службе WCF должен быть доступ только с клиентского сайта. Токен аутентификации, используемый для входа на сайт клиента, должен быть передан службе WCF.
Я смотрел на различные доступные опции WS-Security (Транспорт, Сообщение и т. Д.), И он не совсем опускается на 100%, и я чувствую, что в итоге я реализовал что-то, что казалось безопасным, но на самом деле не было безопасным из-за недостаток понимания. Любая помощь высоко ценится.
Редактировать:
Моя первая попытка была связана с безопасностью транспортного уровня и настройкой виртуального каталога службы WCF с использованием SSL в IIS. Однако это оставило меня с ошибкой:
"Удаленный сертификат недействителен в соответствии с процедурой проверки".
И у меня не было способа убедиться, что конкретный клиент подключался к службе, только что у клиента был сертификат от доверенного ЦС. По крайней мере, насколько я знаю. Я, наверное, здесь что-то упускаю.
1 ответ
Токен аутентификации, используемый для входа на сайт клиента, должен быть передан службе WCF.
В этом случае вы должны запросить токен "ActAs" из STS:
- Служба WCF должна быть настроена как проверяющая сторона службы STS.
- Сайт MVC должен перезвонить STS и запросить токен ActAs, специфичный для службы WCF.
- Сайт MVC использует токен ActAs для вызова службы.
Мотивация для сложности: делегирование или обход многослойных архитектур
Поскольку вы упомянули стандарты WS: запрос токенов делегирования (ActAs) с использованием WSTrustChannel (в отличие от безумия конфигурации)
Не зная вашего STS, трудно сказать больше, но поиск в Google "токена ActAs", вероятно, даст вам то, что вам нужно.