Это можно сделать в любом случае, а значения в запросе GET на самом деле не более заметны, чем значения в запросе POST. Если кто-то может «видеть» (т. Е. перехват), он может видеть все, что вы отправляете. В конце концов, HTTP-запрос - это всего лишь куча HTTP-заголовков, за которыми следует тело. URL-адрес отправляется в первой строке GET /foo/bar HTTP/1.1
, другие значения просто отправляются в разные строки.
Так вы должны ожидать, что ваш токен аутентификации будет отправлен. Вы можете потребовать от него быть параметр запроса, который прилагается к каждому запросу:
GET /foo/bar?user=123456&token=abcde...
Чтобы действительно использовать протокол HTTP по назначению, хотя, вы должны использовать Authorization
HTTP заголовок:
Authorization: MyScheme 123456:abcde...
Содержание этого заголовка полностью зависит от вас. Обычно он определяет способ авторизации, такой как Basic
, за которым следует то, что вы хотите требовать для аутентификации. Это может быть просто имя пользователя и пароль, хэш из них, непрозрачный токен, который клиент получил в какой-то момент или что-то еще на самом деле.
Я бы рекомендовал систему маркеров или систему подписи запроса, причем последнее было очень предпочтительным. В системе подписи запроса клиент должен получить от вас токен. Затем он отправляет хэш этого токена и некоторые характеристики запроса для аутентификации запроса, например. sha1(Token + Timestamp + Request URL + Request Body)
. Ваш сервер может проверить это, если клиент не должен отправлять токен в виде обычного текста при каждом запросе.
Как сделать токен действительным только в течение определенного времени?
Вы сохраняете маркер на стороне сервера с отметкой истечения срока годности и проверяете его.
сделать это как скрытое поле с помощью метода POST –
, что бы смысл службы RESTfull если я мог бы использовать только POST;) я реализовал PUT, POST, GET, DELETE, из Конечно, для каждого метода http существует одна функция –
, чтобы скрыть видимость вашего токена. –