Я создаю новое приложение веб-API asp.net, используя прямой html 5 и службу покоя веб-API. Я уже использую аутентификацию с помощью форм и атрибут [Authorize] для защиты вызовов веб-API. Я стараюсь оставаться верным, насколько это возможно, принципам покоя.
Я имитирую то, что делает существующее приложение, которое использует двухфакторную аутентификацию и использует веб-формы asp.net. Двухфакторная аутентификация используется не для входа в систему, а для дополнительной задачи удаленного доступа к другому компьютеру через сайт и плагин.
Существующее веб-приложение использует состояние сеанса для хранения PIN-кода, который создается и отправляется пользователю по электронной почте. Затем, когда пользователь вводит пин, он сверяется с пином в состоянии сеанса.
Так что, похоже, мои варианты...
- Зашифруйте пин-код, сгенерированный на сервере, и отправьте его обратно клиенту в javascript. Этот вариант кажется угрозой безопасности. Это будет более спокойный вариант.
- Коллега предложил использовать что-то вроде того, что делает Amazon S3, используя пару открытый/закрытый ключ.
- Использовать состояние сеанса, несмотря на использование веб-API.
Итак, какой из этих вариантов является лучшим вариантом? Есть ли другие возможности?