Я хочу защитить отдельные (динамические) страницы в приложении ASP.NET MVC.
Я не хочу использовать полноценную систему аутентификации - мы уже используем формы аутентификации для администраторов сайта. Вместо этого мы можем отправлять ссылки на страницу с паролем для конкретных пользователей.
То, как я сейчас работаю с этим, заключается в том, что при отправке действительного пароля мы создаем зашифрованный файл cookie, содержащий идентификатор страницы (Guid) и идентификатор их сеанса, и перенаправляем их на страницу. Затем в действии контроллера «Страница» мы проверяем этот файл cookie.
Итак, первый вопрос, является ли это лучшим (наиболее безопасным) подходом (помимо использования проверки подлинности по формам)?
Второй вопрос, могу ли я прочитать машинный ключ, используемый Forms Authentication для выполнения шифрования, или, что еще лучше, использовать FormsAuthentication для шифрования cookie (единственная перегрузка, которую я вижу, это та, которая требует FormsAuthenticationTicket)?
Поскольку мы всегда генерируем новый машинный ключ перед развертыванием, было бы лучше, если бы все наше шифрование использовало один и тот же ключ.
[Update]
Относительно того, как получить доступ к ключу машины, я нашел свой ответ по адресу http://rich -rogers.com / archive / asp.net-c-sharp-encrypt-hash-using-machinekey-values
[Обновление 2]
После того, как я задал этот вопрос, я понимаю, что, поскольку мне нужно будет вести список страниц, к которым у них есть доступ, возможно, было бы лучше просто сохранить их в текущем сеансе. Я могу хранить список токенов безопасности с датой истечения срока действия. Поскольку у меня уже есть обертка вокруг сессии, это также будет легко для модульного тестирования.