Безопасность OAuth2 в API REST GET - PullRequest
2 голосов
/ 29 марта 2019

Я понимаю, что OAuth2 - это хороший способ защитить доступ к REST API.Я также понимаю, что в отличие от простого веб-сайта или SOAP API, в REST API вы хотите использовать правильный метод HTTP для правильной задачи.То есть GET для чтения данных, POST для записи и т. Д.

Мой вопрос: когда вы выполняете вызов GET для REST API, защищенного через OAuth2, как вы защищаете свой токен доступа?Я не вижу другого способа передать его на сервер, кроме как в явном виде в URL-адресе, не так ли, чтобы любой, кто может видеть мой вызов в сети, мог взломать мою авторизацию?

1 Ответ

3 голосов
/ 30 марта 2019

HTTP-запрос имеет несколько основных компонентов:

  1. Способ
  2. URL
  3. Заголовки
  4. Body

Маркер OAuth2 Bearer обычно отправляется в заголовках следующим образом:

GET /thingy HTTP/1.1
Host: api.example.org
Authorization: Bearer [secret]

Кроме того, это предположение не совсем верно:

не правда ли, что любой, кто может видеть мой звонок в сети, может взломать мою авторизацию?

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

...