Spring Boot OAuth2 OAuth2Authentication与UsernamePasswordAuthenticationToken

时间:2018-07-04 20:32:06

标签: spring-boot authentication oauth-2.0

我在从用于发送用户详细信息的REST控制器获取正确响应方面遇到问题。使用Spring Boot 1.5.10。这是设置:

  1. OAuth2项目用作身份验证和授权端点
  2. 连接到服务器以进行身份​​验证和授权的微服务

OAuth服务器正在使用 WebSecurityConfigurerAdapter (第2步), ResourceServerConfigurerAdapter (用于保护除oauth以外的api), AuthorizationServerConfigurerAdapter (oauth配置)和 GlobalAuthenticationConfigurerAdapter (ldap与数据库身份验证)。

我有一个资源/ api / v1 / me,可以同时在OAuth服务器和微服务中返回Principal / Authentication对象。如果存在正确的Bearer令牌,则微服务的行为正确并返回OAuth2Authentication;否则,返回401(可以从OAuth服务器获取令牌)。

另一方面,

OAuth服务器给我一些问题。仅当我首先请求令牌(建立JSession)时,它才会返回 / me 响应;否则,它只会将我转发到登录页面。 (我在Thymeleaf中使用了 authorization_code 授予)。在这种情况下,我得到UsernamePasswordAuthenticationToken。

是否可以将服务器配置为使用Bearer身份验证 / me 并返回OAuth2Authentication或401 vs OAuth服务器本身上的Java会话,我只需要通过用户名auth来获取令牌本身?

谢谢

1 个答案:

答案 0 :(得分:0)

哦,老兄,在我提出问题后经过一天的搜索之后,我找到了潜在客户(here)。关键在于http的配置方式,在我不希望进行身份验证的人之前将antMatchers和permitAll包含在内的地方,实际上我需要.requestMatchers()。antMatchers仅包含我感兴趣的资源+“ / login” ,Web适配器中的“ / oauth / authorize”。资源适配器应该处理其余的工作。