Session Spring Security Oauth2,禁用会话的应用程序行为
我在REST服务中禁用了会话管理,因为我正在使用Oauth2对客户机+用户进行身份验证。所以我有这些配置: 资源服务器Session Spring Security Oauth2,禁用会话的应用程序行为,session,spring-security,session-cookies,spring-security-oauth2,spring-session,Session,Spring Security,Session Cookies,Spring Security Oauth2,Spring Session,我在REST服务中禁用了会话管理,因为我正在使用Oauth2对客户机+用户进行身份验证。所以我有这些配置: 资源服务器 @Configuration @EnableResourceServer public class ResourceServerConfig extends ResourceServerConfigurerAdapter { @Override public void configure( HttpSecurity http ) throws Exception {
@Configuration
@EnableResourceServer
public class ResourceServerConfig extends ResourceServerConfigurerAdapter {
@Override
public void configure( HttpSecurity http ) throws Exception {
http.sessionManagement().sessionCreationPolicy( SessionCreationPolicy.STATELESS );
//....
}
}
以及基本身份验证:
@Configuration
@EnableWebSecurity
public class SecurityWebConfig extends WebSecurityConfigurerAdapter {
@Override
public void configure( HttpSecurity http ) throws Exception {
http.sessionManagement().sessionCreationPolicy( SessionCreationPolicy.STATELESS );
//....
}
}
我不知道在这两种配置中这样做是否相关
现在,当我使用经过身份验证的客户端(包括访问令牌)向受保护路径发送请求时。响应头包含一个JSESSIONID
类似
set cookie:JSESSIONID=A3E6E26C28916C5D95795E934F15C8F1
这是正常的行为吗
为了进一步测试,我做了以下操作(以获取当前连接的用户):
记录结果如下:
Connected user: username@mail.com
Is session null: false
那么为什么HttpSession
不为空呢
在我看来,我认为Spring安全上下文依赖于会话来获取经过身份验证的用户,也就是说,如果会话被禁用,安全上下文就找不到当前用户。我错了吗?有人能给我澄清一下这些问题吗
最后,即使会话被禁用,我是否可以始终依靠OAuth2Authentication查找当前连接的客户端和用户
非常感谢,我应该回答您的一些问题谢谢@Vasan,但一点也不清楚。
Connected user: username@mail.com
Is session null: false