#c# #api #rest #wcf #authentication
#c# #API #rest #wcf #аутентификация
Вопрос:
У меня есть следующий метод rest api
[OperationContract]
[WebInvoke(Method = "GET", UriTemplate = "/GetStuff?userName={userName}amp;password={password}amp;howMany={howMany}", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
Things[] GetStuff(string userName, string password, int howMany);
Безопасна ли отправка имени пользователя и пароля как части строки запроса через https или есть лучший способ аутентификации?
Комментарии:
1. URL-адреса хранятся в журналах веб-сервера, истории браузера и т. Д. Если вы считаете, что это безопасно, то у вас есть свой ответ… Всегда есть лучший способ
Ответ №1:
Нет, это не так. Как упоминалось в комментарии, если кто-то украдет ваши журналы, у него будет доступ ко всем параметрам запроса. (в вашем случае конфиденциальная информация).
Параметры запроса (правильно) используются для индемпотентных запросов (например GET
) для фильтрации вашего результирующего набора.
С другой стороны, значения заголовка безопасны. Вот почему мы обычно отправляем заголовки аутентификации / авторизации, а не параметры запроса.
Проверьте заголовок авторизации для примера этого.
Заголовок запроса авторизации HTTP содержит учетные данные для аутентификации агента пользователя на сервере, обычно, но не обязательно, после того, как сервер ответил с неавторизованным статусом 401 и заголовком WWW-Authenticate.