【发布时间】:2019-10-27 11:52:36
【问题描述】:
我正在尝试使用 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 应用程序。
【问题讨论】:
-
vk 是否提供 oauth api?完成 oauth 流程需要一些后端工作,或配置第三方系统,如 fire base,以向您正在使用的 vk 身份验证服务发出请求。
-
@Maus 确实如此,如果我尝试直接从浏览器访问我的后端端点,它会完美运行。它将我重定向到 VK,我授予权限,Spring 成功授权我
-
您可以执行相同的流程,然后使用您的会话 cookie 设置重定向回您的应用程序吗?
-
@Maus 所以你的意思是有一个重定向 uri 设置为后端资源并强制用户首先访问后端应用程序,然后将他们重定向到带有 cookie 的前端?
-
这似乎可行。考虑到您的网站要求,这是否可以接受?
标签: angular typescript oauth-2.0 spring-security-oauth2 spring-webflux