Spring Security OAuth 2. Как использовать токен доступа в клиенте javascript - PullRequest
0 голосов
/ 18 февраля 2019

У меня есть три приложения: REST API с сервером ресурсов, сервером авторизации и клиентом javascript на VueJ, которые должны использовать REST Api.Проблема в использовании токена доступа, который я получаю после авторизации.Сначала я решил использовать локальное хранилище или куки-файл для хранения токена доступа, но когда я прочитал, он не защищен.Рекомендуется использовать cookie с httpOnly, но я не могу получить доступ из js.Добавление токена в параметрах URL также не является правильным способом.Итак, что я должен сделать для использования моего Rest Api?Я использую поток разрешения кода авторизации.

1 Ответ

0 голосов
/ 19 февраля 2019

Если у вас есть клиент Javascript, сам клиент должен действовать как клиент OAuth2 .

То есть сервер - это не то, что получает токен.Клиент, приложение javascript в браузере, будет извлекать токен с сервера авторизации.

Этого можно достичь, используя тип гранта implicit.

В этом типе предоставления нет client_secret, но у вас должен быть действительный client_id.Вы также не получите токен обновления.Но вы можете получить токены доступа и id_token (если у вас есть сервер OIDC).

Ваш вопрос намекает на то, что вы выполняете грант на стороне сервера (код авторизации, пароль и т. Д.), А затем отправляете этот токен клиенту javascript.Это было бы неправильно.

Для хорошего описания OAuth2 мы опубликовали это видео: https://www.youtube.com/watch?v=u4BHKcZ2rxk

Ваше приложение JavaScript будет делать следующее:

  1. У меня есть действительный токен?Нет
  2. Запустить неявное предоставление
  3. Получить токен с сервера авторизации
  4. Сохранить токен в памяти var token = ....
  5. Использовать токен для вызова конечных точек API на сервере
  6. Повторяйте шаг 5 до тех пор, пока токен больше не будет действителен
  7. Вернитесь к шагу 1

Следующим шагом для вас будет просмотр видео и узнайте больше о неявном типе предоставления

Как вы уже догадались, переход на путь получения токена на сервере и последующей отправки его незащищенному клиенту подвергает ваши приложения таким образом, что вынаверное не хочу.

...