使用令牌的 Spring OAuth2 身份验证
Posted
技术标签:
【中文标题】使用令牌的 Spring OAuth2 身份验证【英文标题】:Spring OAuth2 authentication with token 【发布时间】:2021-05-12 23:07:58 【问题描述】:我有这个 SpringBoot 应用程序,它通过 Google 使用 OAuth2 登录。而且它本身就可以正常工作。
但是,我正在尝试将它与我的 React 前端连接起来,因此:尝试开发代币交换。
安全配置
http.cors()
.and()
.authorizeRequests()
.antMatchers(HttpMethod.GET, "/oauth/**")
.authenticated()
.anyRequest()
.permitAll()
.and()
.oauth2Login();
现在,我通过这种方式获取令牌:
OAuth2AuthorizedClient client = authorizedClientService.loadAuthorizedClient(authentication.getAuthorizedClientRegistrationId(), authentication.getName());
String token = client.getAccessToken().getTokenValue();
并将其发送给我的 React 客户端。
问题是:如何在SpringBoot应用中接收和解释授权令牌?
现在,只要我附上 Authoriation
标头,它就会给我一个 CORS 问题...
【问题讨论】:
【参考方案1】:您必须在 Spring Boot 应用程序中配置允许的 CORS 请求,或者从同一域为您的 react 前端提供服务。
我个人总是选择第二个选项,使用 Spring Boot 应用程序在某些 url 上提供反应包(例如 /static/js/)。
【讨论】:
不,没那么简单。我当然启用了 CORS... 是 OPTIONS 请求被阻止了吗? 禁用预检请求的安全性 - 例如***.com/a/26848692/5885758 伙计,我告诉你没那么简单!是谷歌端点阻止了我..以上是关于使用令牌的 Spring OAuth2 身份验证的主要内容,如果未能解决你的问题,请参考以下文章
Spring oauth2令牌请求中未实际使用的基本身份验证过滤器和身份验证入口点
使用 spring-boot-starter-oauth2-client 检索 OAuth2 3-legged 身份验证的访问令牌
向 Google 进行身份验证时,从 Spring OAuth2 授权服务器发出 JWT 令牌
如何从 facebook/google/... oauth2 身份验证在 Spring (Boot) 中为单页应用程序派生自定义登录令牌?