Spring Security OAuth2禁用基于jsessionid的会话

我没有发表评论的声誉,否则这篇文章描述了完全相同的问题。

我已经在spring 4应用程序中成功实现了security" title="spring security">spring security oauth2

2.0.5。一切正常,我可以生成令牌,并且对api请求进行了正确的身份验证。但是问题在于,一旦使用基于浏览器的应用程序中的访问令牌对api进行身份验证,后续调用就不需要访问令牌,因为-

看来spring security依赖于sessionid来标识和认证用户。-即使访问令牌到期后,呼叫似乎仍然有效。

因此,似乎spring仅在第一次调用时依赖于访问令牌,然后它依赖于cookie /

jsessionid。我试图以以下方式禁用行为(从sparklr2学习)-

Configuration

@EnableWebSecurity

public class SecurityConfiguration extends WebSecurityConfigurerAdapter {

@Override

protected void configure(HttpSecurity http) throws Exception {

http.anonymous().disable();

//oauth2 recommends that oauth token url should be only available to authorized clients

http.requestMatchers().antMatchers("/oauth/token").and().authorizeRequests().anyRequest().fullyAuthenticated();

http.httpBasic().authenticationEntryPoint(oAuth2AuthenticationEntryPoint()).and()

.addFilterBefore(clientCredentialsTokenEndpointFilter(), BasicAuthenticationFilter.class)

.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS).and().exceptionHandling()

.accessDeniedHandler(oAuth2AccessDeniedHandler);

}

但这无济于事。在日志中,我可以看到-

试图使用Ant进行匹配[pattern =’/ oauth / token’]检查请求的匹配情况:’/v1.0/printconfig/’; 针对’/

oauth / token’尝试使用Ant [pattern =’/ oauth /

token_key’]进行匹配检查请求的匹配:’/v1.0/printconfig/’; 针对’/ oauth / token_key’尝试使用Ant

[pattern =’/ oauth / check_token’]进行匹配检查请求的匹配:’/v1.0/printconfig/’; 针对’/

oauth / check_token’找不到匹配项尝试使用Ant [pattern =’/ v1.0 /

/v1.0/

‘匹配的/v1.0/printconfig/在附加过滤器链中10的位置1;触发过滤器:“

WebAsyncManagerIntegrationFilter” / v1。

org.springframework.security.web.header.writers.HstsHeaderWriter$SecureRequestMatcher@6044b89b

/v1.0/printconfig/在附加过滤器链中的10的位置4;触发过滤器:’LogoutFilter’检查请求的匹配:’/v1.0/printconfig/’;

针对附加过滤器链中10位置5的’/ logout’/v1.0/printconfig/;触发过滤器:

/v1.0/printconfig/在附加过滤器链中10的位置6处;触发过滤器:’RequestCacheAwareFilter’/v1.0/printconfig/在附加过滤器链中10的位置7;触发过滤器:“

SecurityContextHolderAwareRequestFilter”

/v1.0/printconfig/在其他过滤器链中的10的位置8;触发过滤器:’SessionManagementFilter’/v1.0/printconfig/在附加过滤器链中10的位置9;触发过滤器:’ExceptionTranslationFilter’/v1.0/printconfig/在附加过滤器链中10的位置10;触发过滤器:’FilterSecurityInterceptor’检查请求的匹配:’/v1.0/printconfig/’;

针对’/v1.0/**’安全对象:FilterInvocation:URL:/v1.0/printconfig/;

属性:[#oauth2.throwOnError(hasRole(’ROLE_USER’))]先前已认证:org.springframework.security.oauth2.provider.OAuth2Authentication@bd392350:主体:org.springframework.security.core.userdetails.User@6d:用户名:m;密码保护];

启用:true;AccountNonExpired:true;certificateNonExpired:true;AccountNonLocked:true;授予的权限:ROLE_USER;凭证:[受保护];已验证:true;详细信息:remoteAddress

= 0:0:0:0:0:0:0:1,tokenValue =;

授予的权限:ROLE_USER选民:org.springframework.security.web.access.expression.WebExpressionVoter@5f574bdc,返回:1授权成功RunAsManager没有更改身份验证对象/v1.0/printconfig/到达附加过滤器链的末尾;继续原始链继续正常处理的链SecurityContextHolder现在已清除,因为请求处理已完成

provider.OAuth2Authentication@bd392350:主体:org.springframework.security.core.userdetails.User@6d:用户名:m;密码保护];

启用:true;AccountNonExpired:true;certificateNonExpired:true;AccountNonLocked:true;授予的权限:ROLE_USER;凭证:[受保护];已验证:true;详细信息:remoteAddress

= 0:0:0:0:0:0:0:1,tokenValue =;

授予的权限:ROLE_USER选民:org.springframework.security.web.access.expression.WebExpressionVoter@5f574bdc,返回:1授权成功RunAsManager没有更改身份验证对象/v1.0/printconfig/到达附加过滤器链的末尾;继续原始链继续正常处理的链SecurityContextHolder现在已清除,因为请求处理已完成

provider.OAuth2Authentication@bd392350:主体:org.springframework.security.core.userdetails.User@6d:用户名:m;密码保护];

启用:true;AccountNonExpired:true;certificateNonExpired:true;AccountNonLocked:true;授予的权限:ROLE_USER;凭证:[受保护];已验证:true;详细信息:remoteAddress

= 0:0:0:0:0:0:0:1,tokenValue =;

授予的权限:ROLE_USER选民:org.springframework.security.web.access.expression.WebExpressionVoter@5f574bdc,返回:1授权成功RunAsManager没有更改身份验证对象/v1.0/printconfig/到达附加过滤器链的末尾;继续原始链继续正常处理的链SecurityContextHolder现在已清除,因为请求处理已完成

userdetails.User@6d:用户名:m;密码保护];

启用:true;AccountNonExpired:true;certificateNonExpired:true;AccountNonLocked:true;授予的权限:ROLE_USER;凭证:[受保护];已验证:true;详细信息:remoteAddress

= 0:0:0:0:0:0:0:1,tokenValue =;

授予的权限:ROLE_USER选民:org.springframework.security.web.access.expression.WebExpressionVoter@5f574bdc,返回:1授权成功RunAsManager没有更改身份验证对象/v1.0/printconfig/到达附加过滤器链的末尾;继续原始链继续正常处理的链SecurityContextHolder现在已清除,因为请求处理已完成

userdetails.User@6d:用户名:m;密码保护];

启用:true;AccountNonExpired:true;certificateNonExpired:true;AccountNonLocked:true;授予的权限:ROLE_USER;凭证:[受保护];已验证:true;详细信息:remoteAddress

= 0:0:0:0:0:0:0:1,tokenValue =;

授予的权限:ROLE_USER选民:org.springframework.security.web.access.expression.WebExpressionVoter@5f574bdc,返回:1授权成功RunAsManager没有更改身份验证对象/v1.0/printconfig/到达附加过滤器链的末尾;继续原始链继续正常处理的链SecurityContextHolder现在已清除,因为请求处理已完成

ROLE_USER; 凭证:[受保护];已验证:true;详细信息:remoteAddress = 0:0:0:0:0:0:0:1,tokenValue

=;

授予的权限:ROLE_USER选民:org.springframework.security.web.access.expression.WebExpressionVoter@5f574bdc,返回:1授权成功RunAsManager没有更改身份验证对象/v1.0/printconfig/到达附加过滤器链的末尾;继续原始链继续正常处理的链SecurityContextHolder现在已清除,因为请求处理已完成

ROLE_USER; 凭证:[受保护];已验证:true;详细信息:remoteAddress = 0:0:0:0:0:0:0:1,tokenValue

=;

授予的权限:ROLE_USER选民:org.springframework.security.web.access.expression.WebExpressionVoter@5f574bdc,返回:1授权成功RunAsManager没有更改身份验证对象/v1.0/printconfig/到达附加过滤器链的末尾;继续原始链继续正常处理的链SecurityContextHolder现在已清除,因为请求处理已完成

0 / printconfig

/到达附加过滤器链的末尾;继续原始链继续正常处理的链SecurityContextHolder现在已清除,因为请求处理已完成 0 /

printconfig /到达附加过滤器链的末尾;继续原始链继续正常处理的链SecurityContextHolder现在已清除,因为请求处理已完成

如您所见,不存在oauth令牌标头,但仍然有其他过滤器标识了该会话。我想禁用sessionId本身,但是只禁用spring对用户本身的身份验证就可以了。我希望访问令牌是传入请求的唯一标识符。

回答:

在我看来,/v1.0/printconfig/OAuth2受保护的资源位于后面OAuth2AuthenticationProcessingFilter,并且您的客户端发送了Cookie而不是令牌?如果正确,那么您将看到2.0.5中的默认行为(接受cookie,并让您在自己的配置中控制访问规则)。默认在2.0.6中更改(除非明确配置资源服务器,否则cookie将不起作用:[https](https://github.com/spring-

projects/spring-security-oauth/blob/master/spring-security-

oauth2/src/main/java/org/springframework/security/oauth2/config/annotation/web/configurers/ResourceServerSecurityConfigurer.java#L94)

//github.com/spring-projects/spring-security-oauth/blob/master/spring-

security-oauth2/src

/main/java/org/springframework/security/oauth2/config/annotation/web/configurers/ResourceServerSecurityConfigurer.java#L94)。

以上是 Spring Security OAuth2禁用基于jsessionid的会话 的全部内容, 来源链接: utcz.com/qa/434847.html

回到顶部