Я пытаюсь реализовать социальный вход в систему с VK для моего приложения Angular и серверной части Spring Webflux. На данный момент у меня есть конечная точка на бэкэнде для обслуживания информации пользователя: localhost:8080/people/me
. Я попытался аутентифицировать пользователя на внешнем интерфейсе следующим образом:
ngOnInit(): void {
this.http.get(USER_INFO_URL)
.subscribe((resp: Response) => {
if (resp.status < 300) {
this.authenticated = true;
resp.json()
.then(vkUser => {
let fields: [string, string] = ['firstName', vkUser.firstName];
fields['lastName'] = vkUser.lastName;
this.user = new User(vkUser.id, fields);
});
} else {
window.location.href = AUTH_URL;
}
});
}
Однако, когда мое приложение Spring перенаправляет клиента на VK
для аутентификации, VK
не предоставляет никаких заголовков CORS
, что приводит к сбою механизма.
Может ли кто-нибудь порекомендовать способ использования OAuth2
для пары Angular / Spring? Я использую поток code
, поэтому я предполагаю, что сначала мне нужно получить код на внешнем интерфейсе, а затем отправить его на сервер Spring, чтобы он изменил его для маркера доступа.
В то же время я чувствую, что мой подход может быть неправильным, и весь процесс аутентификации должен выполняться на бэкэнде, в то время как на фронтэнде должен быть только cookie, но тогда я не могу понять, как перенаправить AJAX-запрос от внешнего интерфейса до страницы входа в VK, обработайте это на обратном конце и затем вернитесь в приложение Angular.