в Интернете действительно много дискуссий по аутентификации REST Architecture, поэтому я думаю, что пришло время разместить решение в одном месте. Решение, которое звучит несколько нормально:
(Профессионалы безопасности, пожалуйста, прокомментируйте)
- Пользователь авторизуется под своим логином и паролем
- На сервере логин и пароль проверяются
если учетные данные действительны, мы получаем уникальный идентификатор, смешивая временную метку с идентификатором пользователя. мы используем таблицу для сопоставления uniqueId->userid и делаем запись для уникального идентификатора, который мы только что сгенерировали, и идентификатора пользователя
Кроме того, мы устанавливаем заголовок HTTP, скажем, идентификатор, содержащий уникальный идентификатор и идентификатор пользователя, с конкатенацией строк, подобной этой
<uniqueId>#<userid>.
При каждом запросе клиент должен предоставлять эту информацию,
если запрос от клиента требует, чтобы мы определили, кем является клиент, чтобы мы могли проверить его разрешения, то мы делаем это:
получить заголовок http #,
если не содержит недействительного пользователя
если содержит проверку в базе данных, если сопоставление uniqueId->userid существует
если да, мы идентифицировали пользователя, иначе недействительный пользователь
Вся эта схема основана на HTTPS