Отправка имени пользователя и пароля на веб-сервис - PullRequest
6 голосов
/ 20 мая 2010

Я занимаюсь разработкой веб-службы, и мне необходимо отправить имя пользователя и пароль в службу методом GET. Можно ли отправлять эту информацию в URI, если она идет по безопасному каналу, например, по протоколу ssl? Другими словами, могу ли я иметь URI, который выглядит как / users / {username} / {cleartext_password}?

Редактировать: Извините, я думаю, что мне было неясно. Веб-сервис - это просто база данных имен пользователей и хэшированных паролей. Представьте себе настольное приложение, которое хранит имена пользователей и пароли в удаленной базе данных. Конечный пользователь вводит свое имя пользователя и пароль в приложение, и приложение обращается к веб-службе для аутентификации пользователя.

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

Ответы [ 4 ]

7 голосов
/ 20 мая 2010

Сделайте это.

Отправьте «ключ» и «дайджест».

«Ключ» эквивалентен имени пользователя.

«Дайджест» - это хэш SHA1 (или MD5) ключа, URI и «общего секрета» или пароля.

Когда сервер получает это, он вычисляет свою собственную версию дайджеста, основываясь на ключе, запрашиваемом URI и «общем секрете» или пароле.Неверное совпадение с дайджестами - это сообщение об ошибке 401.

0 голосов
/ 20 мая 2010

SSL действительно шифрует URI, но обязательно рассмотрим некоторые альтернативы.

Базовая HTTP-аутентификация удобна и проста и хорошо поддерживается браузерами, веб-серверами и т. Д.

Он также не попадет в файлы журналов в той же степени, что и URI

NB. Это просто некоторые текстовые HTTP-заголовки, поэтому определенно НЕ рекомендуется для приложений без SSL.

http://en.wikipedia.org/wiki/Basic_access_authentication

0 голосов
/ 20 мая 2010

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

Что вы можете сделать, это сначала пройти аутентификацию в веб-сервисе (отправить имя пользователя и пароль через ssl в виде открытого текста) и получить токен с сервера, который он распознает. Затем отправляйте этот токен с каждым последующим запросом.

0 голосов
/ 20 мая 2010

Вообще говоря, это не очень хорошая идея ... Эти данные будут присутствовать в ряде файлов журналов, следовательно, данные могут быть видны людям, которые не должны их видеть. По крайней мере, вы должны хешировать или зашифровать его перед отправкой, если можете.

Ниже приведено подробное обсуждение ... Безопасна ли строка запроса HTTPS?

...