Я должен реализовать веб-сайт (MVC4/Single Page Application + knockout + Web.API), и я читал множество статей и форумов, но я до сих пор не могу разобраться в некоторых вопросах безопасности/аутентификации и чтобы продвигаться вперед при защите страницы входа и Web.API.Как мне защитить свой SPA и Web.API?
Сайт будет работать под SSL. Как только пользователь войдет в систему в первый раз, он/она получит электронное письмо со ссылкой для подтверждения процесса регистрации. Пароль и значение «соли» будут храниться в зашифрованном виде в базе данных, без возможности получить пароль, дешифрованный. API будет использоваться только для этого приложения.
У меня есть несколько вопросов, которые мне нужно ответить, прежде чем идти дальше:
- Какой метод будет лучше для моего приложения с точки зрения безопасности: Basic/SimpleMembership? Любые другие возможности?
- Объект Principal/IPrincipal должен использоваться только с базовой аутентификацией?
- Насколько я знаю, если я использую SimpleMembership, из-за использования файлов cookie, разве это не нарушает парадигму RESTful? Итак, если я создаю REST Web.API, не следует ли мне избегать использования SimpleMembership?
- Я проверял ThinkTecture.IdentityModel, с жетонами. Является ли это типом аутентификации, например Basic, Forms или Auth, или это то, что можно добавить к другим типам проверки подлинности?
спасибо.
Sujesh, спасибо за ваш ответ. Я знаю, что SPA не отличается от любого другого приложения, я просто попытался установить сценарий, чтобы сделать его более ясным для возможных ответов. Я понимаю, что вы подразумеваете под ответом 1, но я предполагаю, что каждый способ сделать аутентификацию будет иметь преимущества/недостатки. О вашем последнем комментарии о токенах, я имел в виду использование атрибута AntiForgeryToken, и я знаю, как его использовать, но если я решит пойти на аутентификацию на основе токенов, значит ли это, что я должен отправить в мой запрос на API, два токена? (аутентификация и AntyForgery). – Scheveningen
Правильно. Как правило, токен antiforgery - это не что иное, как скрытое поле с токеном, которое затем отправляется с каждой формой submit. В этом случае, если вы работаете только с HTML, вы будете явно читать токен (выпустите маркер на свой основной индекс или придумайте способ, он зависит от аутентификации), а затем отправьте его как часть ваших заголовков в вас запрос ajax. –