当前位置: 首页 > 知识库问答 >
问题:

Spring Security中的Oauth2手动身份验证不会在整个会话中保持SecurityContext

桂飞翼
2023-03-14

我使用Spring Security Oauth2和JWT将客户端应用程序登录/授权到授权服务器应用程序,这两个应用程序都是用Spring Boot2构建的。

客户端应用程序中,我手动执行登录,从授权服务器检索JWT令牌,然后在代码中执行

OAuth2Authentication authentication = tokenStore.readAuthentication(token);
SecurityContextHolder.getContext().setAuthentication(authentication);
@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
...
  @Override
  public void configure(HttpSecurity http) throws Exception {
      http.csrf()
      .disable()
      .sessionManagement()
      .sessionCreationPolicy(SessionCreationPolicy.IF_REQUIRED)
      .and()
      .authorizeRequests()
      .antMatchers("/login")
      .permitAll()
      .anyRequest()
      .authenticated();
  }
...
}

然后我想在客户端应用程序流的稍后部分检索令牌:

 SecurityContext securityContext = SecurityContextHolder.getContext();
 OAuth2Authentication oauth = (OAuth2Authentication)securityContext.getAuthentication();
 String token = (String) oauth.getCredentials();

但oauth对象为空。

共有1个答案

胡博艺
2023-03-14

您是否在之后创建会话并更新其上下文?

HttpSession session = request.getSession(true);
session.setAttribute("SPRING_SECURITY_CONTEXT", securityContext);
 类似资料:
  • TL;DR:成功登录并重定向到后,我被控制器的中间件踢回(

  • 我正在用Spring开发一个网站,我使用Spring Security进行身份验证。我有个无法解决的问题: 当会话被破坏(例如WebSecurityConfigurerAdapter中的更改)时,会显示第二个div导致内部服务器错误,因为session.User对象为NULL。 当用户会话被破坏时,如何使用户“未经身份验证”? 编辑:SecurityConfig 调用/注销时的Spring Sec

  • 我遵循了认证教程,但遇到了一些问题。 它不能将变量传递给导入的函数。

  • 我正在尝试根据Laravel5.3中的API对用户进行身份验证。它不起作用。一旦用户在登录后重定向,身份验证就不会持久。 路由配置如下: 在LoginController.php我正在使用 成功保存在文件中的登录后,路由的会话不会启动。 所以在路径上:

  • 问题内容: 我对问题不是很具体(希望通过与Scrapy进行身份验证的会话进行抓取),希望能够从更笼统的答案中得出解决方案。我应该宁可使用这个词。 所以,这是到目前为止的代码: 如你所见,我访问的第一页是登录页面。如果尚未通过身份验证(在函数中),则调用自定义函数,该函数将发布到登录表单中。然后,如果我我验证,我想继续爬行。 问题是我尝试覆盖以登录的功能,现在不再进行必要的调用以刮擦任何其他页面(我

  • 问题内容: 我正在PHP Lumen中构建一个应用程序,该应用程序在登录时会返回令牌。我不知道如何继续进行。 我应该如何使用这些令牌维护会话? 具体来说,如果我使用reactjs或原始HTML / CSS / jQuery,如何将令牌存储在客户端,并在我为Web应用程序的安全部分提出的每个请求中发送令牌? 问题答案: 我通常要做的是将令牌保留在本地存储中,这样即使用户离开站点,我也可以保留令牌。