Безопасно ли использовать токены потока кода авторизации OAuth из JS-кода клиента? - PullRequest
1 голос
/ 02 мая 2019

Я читаю документацию по Spotify Web API, ориентируясь на руководства по авторизации.Они предоставляют пример кода для кода авторизации потока OAuth2, но есть кое-что, что мне не совсем подходит.Мои знания о протоколе OAuth немного ограничены, поэтому я не могу быть уверен в этом.

Дело в том, что они делают вызов для получения маркеров доступа и обновления на стороне сервера, но затем они делаютперенаправить на начальный маршрут , передав токены в качестве параметров URL, чтобы разрешить использование из кода JS .Вот код сервера node.js:

[POST call to the token end-point to get the tokens]

[...]

// we can also pass the token to the browser to make requests from there
res.redirect('/#' +
    querystring.stringify({
        access_token: access_token,
        refresh_token: refresh_token
    })
);

Затем на интерфейсном JS они отправляют HTTP-запросы к API, используя эти токены.Они даже обновляют токены как вызов AJAX.

Мой вопрос: не является ли это плохим способом использования потока кода авторизации?Могу ли я изменить код и перенести все вызовы API, которые требуют использования токена доступа, на сервер, а затем получить полученную информацию через внутренние вызовы на сервер?

1 Ответ

0 голосов
/ 02 мая 2019

Это сильно зависит от вашего приложения. Если ваш пользователь использует ваш веб-сайт и доверяет своему браузеру, сохранение маркеров в браузере не должно быть проблемой. Сохранение токена в виде cookie в браузере в этом случае будет таким же безопасным, как и при входе пользователя в ваш собственный механизм входа, который позволяет пользователю использовать ваш API.

Миграция так, что ваш клиент просит сервер выполнить действия, означает, что вам нужно иметь несколько вещей:

  • Сервер, который обслуживает запрос (может быть, вы просто хотите, чтобы веб-приложение выполняло OAuth без сервера)
  • Пользователь должен доверять вашему серверу, что вы храните токен в безопасности
  • Некоторая форма авторизации, чтобы убедиться, что только один пользователь может использовать ваш API, а вместе с ним токен
  • Ваш сервер должен обслуживать дополнительные запросы, и для каждого запроса добавляется дополнительная задержка
...