Spring oauth2 авторизовать поток в одностраничном приложении - PullRequest
0 голосов
/ 22 февраля 2020

Я внедряю сервер авторизации oauth2 для предоставления доступа к нашему API. Наше приложение представляет собой одностраничное приложение с токеном jwt в заголовке аутентификации для предоставления доступа. Мы хотим настроить поток кода авторизации oauth2, например,

  1. Пользователь находится на внешнем сайте и хочет получить доступ к нашему apis
  2. Внешний сайт перенаправляет на наш сайт / спа с параметрами oauth2 , client_id et c.
  3. SPA проверяет аутентификацию, пользователям необходимо войти в систему, чтобы продолжить
  4. Пользователь видит страницу для подтверждения доступа
  5. Пользователь подтверждает доступ, код возвращается и перенаправляется на внешний сайт
  6. Внешний сайт выполняет обратный канал для получения токена из кода

Моя проблема в 4 и 5, в стандартной установке Spring это обеспечивается org.springframework.security. oauth2.provider.endpoint.AuthorizationEndpoint, on / oauth / authorize GET параметры oauth сохраняются в сеансе и отображается страница подтверждения, а после сообщения код возвращается в перенаправлении.

Но я не могу найдите любое руководство / примеры того, как сделать это со страницей, размещенной в SPA. Вы должны пройти аутентификацию в этой конечной точке, и я не могу действительно использовать страницу верхнего уровня, которую предоставляет / oauth / авторизованный, потому что мы используем аутентификацию на основе заголовка только для остальных вызовов API, все наши вызовы верхнего уровня не аутентифицированы.

Есть ли какой-нибудь очевидный способ заставить эту работу? Я думаю, что я не хочу помещать свой токен аутентификации в поварскую ie. Я думал о том, чтобы просто создать контроллер, который делает то же самое, что и AuthorizationEndpoint, и вернуть перенаправление на перенаправление в Javascript. Но я не уверен, что нарушу какое-то другое требование безопасности.

...