Я внедряю сервер авторизации oauth2 для предоставления доступа к нашему API. Наше приложение представляет собой одностраничное приложение с токеном jwt в заголовке аутентификации для предоставления доступа. Мы хотим настроить поток кода авторизации oauth2, например,
- Пользователь находится на внешнем сайте и хочет получить доступ к нашему apis
- Внешний сайт перенаправляет на наш сайт / спа с параметрами oauth2 , client_id et c.
- SPA проверяет аутентификацию, пользователям необходимо войти в систему, чтобы продолжить
- Пользователь видит страницу для подтверждения доступа
- Пользователь подтверждает доступ, код возвращается и перенаправляется на внешний сайт
- Внешний сайт выполняет обратный канал для получения токена из кода
Моя проблема в 4 и 5, в стандартной установке Spring это обеспечивается org.springframework.security. oauth2.provider.endpoint.AuthorizationEndpoint, on / oauth / authorize GET параметры oauth сохраняются в сеансе и отображается страница подтверждения, а после сообщения код возвращается в перенаправлении.
Но я не могу найдите любое руководство / примеры того, как сделать это со страницей, размещенной в SPA. Вы должны пройти аутентификацию в этой конечной точке, и я не могу действительно использовать страницу верхнего уровня, которую предоставляет / oauth / авторизованный, потому что мы используем аутентификацию на основе заголовка только для остальных вызовов API, все наши вызовы верхнего уровня не аутентифицированы.
Есть ли какой-нибудь очевидный способ заставить эту работу? Я думаю, что я не хочу помещать свой токен аутентификации в поварскую ie. Я думал о том, чтобы просто создать контроллер, который делает то же самое, что и AuthorizationEndpoint, и вернуть перенаправление на перенаправление в Javascript. Но я не уверен, что нарушу какое-то другое требование безопасности.