Предоставить токен доступа к API из клиентского приложения - PullRequest
0 голосов
/ 05 июля 2019

У меня есть веб-сайт, который я хочу интегрировать с OAuth2 / OpenID. Первое, что нужно сделать, это настроить Identity Provider, который будет выдавать токены доступа.

На веб-сайте будет несколько приложений SpringBoot, но в базовом сценарии у меня будет одно приложение для предоставления статических файлов, а другое - с помощью REST API. Мы можем легко настроить клиента OAuth2 с аннотацией @EnableOAuth2Sso для согласования аутентификации с использованием потока кода авторизации . Он защитит доступ к статическим файлам (это является обязательным требованием) и предоставит токен доступа для следующих запросов.

Статические файлы - это одностраничное приложение, которое отправляет запросы в API. API легко создается с аннотацией @EnableResourceServer, и он будет работать в другом контексте SpringBoot. Он может даже находиться в другом домене (для этого нам потребуется CORS), но суть в том, что сеанс Spring не является общим.

Нам нужно как-то сделать запросы к API с помощью ранее полученного токена доступа. Мы можем отправить его в браузер в виде файла cookie, и SPA будет использовать эту информацию для заполнения заголовка Authorization.

Я не знаю, даже если это безопасно! Кроме того, основным недостатком является истечение срока действия токена доступа, он не будет обновлен и API не будет доступен.

Альтернативой является реализация неявного потока в SPA. Но здесь мы не можем защитить статические файлы, потому что для их аутентификации требуется доступ к ним. А также из-за текущих реализаций предпочтительно сохранять детали аутентификации на стороне сервера.

...