Это может быть сделано любым способом, и значения в запросе 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)
.Ваш сервер может это проверить, и клиенту не нужно отправлять токен в виде простого текста при каждом запросе.
Как сделать токен действительным только в течение определенного времени?
Вы сохраняете токен на стороне сервера с отметкой времени истечения и проверяете ее.