Междоменная аутентификация с использованием зашифрованного токена, переданного через URL

#asp.net-mvc-3 #cross-domain #security

#asp.net-mvc-3 #междоменная #Безопасность

Вопрос:

Я изучаю, как аутентифицировать пользователя в домене abc.com а затем разрешить им доступ к защищенной области сайта xyz.com без входа во второй раз.

После небольшого чтения следующее решение выглядит работоспособным:

  1. Пользователь входит на сайт abc.com аутентификация с помощью обычных форм

  2. После успешного входа в систему в общей базе данных создается запись, содержащая guid, имя пользователя и текущую дату / время.

  3. Токен безопасности генерируется путем шифрования guid, а затем перенаправления на сайт xyz.com возвращается с токеном безопасности в качестве параметра строки запроса.

  4. Сайт xyz.com получает входящий запрос, расшифровывает токен, находит соответствующую запись в базе данных (отфильтрованную за последнюю минуту), а затем генерирует файл cookie аутентификации forms для соответствующего пользователя, прежде чем перенаправить пользователя обратно на abc.com

Теперь у пользователя должны быть файлы cookie аутентификации двух форм, по одному для каждого домена.

Является ли этот подход в принципе разумным? Есть ли какие-либо хорошие ссылки, о которых вы знаете?

Ответ №1:

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

OpenID не требует общей базы данных.

Комментарии:

1. Да — с тех пор я обнаружил, что OpenID для аутентификации и OAuth для делегированной авторизации намного удобнее. Спасибо