#asp.net-mvc-3 #cross-domain #security
#asp.net-mvc-3 #междоменная #Безопасность
Вопрос:
Я изучаю, как аутентифицировать пользователя в домене abc.com а затем разрешить им доступ к защищенной области сайта xyz.com без входа во второй раз.
После небольшого чтения следующее решение выглядит работоспособным:
-
Пользователь входит на сайт abc.com аутентификация с помощью обычных форм
-
После успешного входа в систему в общей базе данных создается запись, содержащая guid, имя пользователя и текущую дату / время.
-
Токен безопасности генерируется путем шифрования guid, а затем перенаправления на сайт xyz.com возвращается с токеном безопасности в качестве параметра строки запроса.
-
Сайт xyz.com получает входящий запрос, расшифровывает токен, находит соответствующую запись в базе данных (отфильтрованную за последнюю минуту), а затем генерирует файл cookie аутентификации forms для соответствующего пользователя, прежде чем перенаправить пользователя обратно на abc.com
Теперь у пользователя должны быть файлы cookie аутентификации двух форм, по одному для каждого домена.
Является ли этот подход в принципе разумным? Есть ли какие-либо хорошие ссылки, о которых вы знаете?
Ответ №1:
Подход действителен, хотя и подвержен повторным атакам. Почему бы просто не использовать OpenID? Он также может выполнять нежелательные утверждения, которые, похоже, вы хотите использовать.
OpenID не требует общей базы данных.
Комментарии:
1. Да — с тех пор я обнаружил, что OpenID для аутентификации и OAuth для делегированной авторизации намного удобнее. Спасибо