Простая стратегия аутентификации REST? - PullRequest
5 голосов
/ 20 сентября 2011

Я разрабатываю веб-сервис, который может использоваться несколькими клиентами, веб, мобильными, сторонними организациями и т. Д. Я рассматриваю REST как возможное решение и рассматриваю случай аутентификации.

Я стараюсь сделать вещи простыми и производительными. Для записи я использую Node.js.

Я понимаю, что сеансы не рекомендуется из соображений масштабируемости.

Каково мнение о передаче имени пользователя и пароля при каждом запросе через https?

Например:

http://myservice/users/list?username=authorized&password=mypass

Есть ли серьезные недостатки у этого подхода? Открывает ли это дыру в безопасности, межсайтовый скриптинг?

Есть ли лучшее решение для веб-службы в целом?

Ответы [ 2 ]

5 голосов
/ 20 сентября 2011

Вы никогда не должны использовать информацию открытого текста внутри URL (это может быть видно в история браузера, не запутанная, а также внутри обычного журнала, как apache).

Вместо этого используйте HTTP-заголовки для этого:

X-USER: user
X-PWD: password

Преимущества:

  • Соответствует HTTP (заголовки HTTP часто используются для сквозных задач, таких как безопасность или контроль кэширования)
  • В случае использования SSL (например, через https) информация шифруется

Если у вас нет SSL, вы должны использовать одноразовый подход. Взгляните на HTTP-дайджест , чтобы получить некоторые идеи. Если вам не нужно идентифицировать конкретных пользователей (например, конечных пользователей мобильных устройств), вы можете полностью повторно использовать HTTP-дайджест .

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

1 голос
/ 20 сентября 2011

Вам нужен nonce .

В противном случае вам будет хорошо, если вы используете SSL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...