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

删除access_token注销后在Spring Security Oau2

山森
2023-03-14

我在springsecurity和oauth2中注销有问题

我们使用Spring SecurityOAuth2保护REST服务。令牌和REST apiendpoint是无状态的,不需要会话。我只需要身份验证服务器一次登录验证,当我在rest客户端中调用注销服务时,它显示200响应,但没有删除授权。当我输入用户名和密码时,应该是同一个用户登录。但不注销。我还澄清了上下文。

这是我的控制器

`@Path("oauth2/logout")
 public class LogoutImpl implements LogoutSuccessHandler{ 
 private TokenStore tokenStore;
 @Autowired
 public LogoutImpl(TokenStore tokenStore) {
     this.tokenStore = tokenStore;
 }
 public void setTokenStore(TokenStore tokenStore) {
  this.tokenStore = tokenStore;
 }
 @Override
 public void onLogoutSuccess(HttpServletRequest request, HttpServletResponse  response, Authentication authentication)
   throws IOException, ServletException {
     removeaccess(request);
    SecurityContextHolder.clearContext();
    response.getOutputStream().write("\n\tYou Have Logged Out successfully.".getBytes());}
public void removeaccess(HttpServletRequest req) {
  String tokens = req.getHeader("Authorization");
 String value = tokens.substring(tokens.indexOf(" ")).trim();
  OAuth2AccessToken token = tokenStore.readAccessToken(value.split(" ")[0]);
  tokenStore.removeAccessToken(token);
  System.out.println("\n\tAccess Token Removed Successfully!!!!!!!!");
 }}
`  

共有1个答案

苏宜人
2023-03-14

我看到您正在使用授权标头,并且我认为令牌是 JWT。没有删除或撤销 JWT 的概念。它必须自行过期。有些人的观点会指出,当服务器无法撤销令牌并且不能用于企业应用程序时,这是一个缺点。

客户端在另一个API中使用同一个令牌时,服务器会分析该令牌,如果该令牌在到期时间内且未被篡改,则将验证为真。

然而,如果您不使用JWT,情况将有所不同,答案也将无关紧要。

 类似资料:
  • 在我的本地开发Ubuntu框中,我使用MySQL和phpmyadmin来处理数据库。 每当phpmyadmin空闲1440秒(24分钟)时,会话将过期。我失去了我的位置,不得不登录并重新开始。 我尝试更改内的,但它仍然在1440秒内超时。 我已经重新启动了所有程序并清除了浏览器缓存(Firefox历史记录)- 我不知道为什么增加的超时没有生效。我做错了什么?

  • 它给出: 下面是我使用的代码: 方法verifyUserExistance是; 我就是这样处理注销的;

  • 接口说明 该接口已经废弃,请使用【单体化、标绘、压平 -> GEOJSON上传】接口 如果出现标记有误或者不想在对某个位置进行标记,可以调用该接口来删除标记的位置 如需调用,请访问 开发者文档 来查看详细的接口使用说明 该接口仅开放给已获取SDK的开发者 API地址 POST /api/marker/1.0.0/del 是否需要登录 是 请求字段说明 参数 类型 请求类型 是否必须 说明 id s

  • 您好,我在ADFS 2.0中面临以下单一注销问题。 我使用ADFS 2.0作为RST,另一个ADFS 2.0注册为声明提供程序,并配置为表单身份验证。 我有4个依赖方(RPs)托管在另一台IIS服务器上。 在对索赔提供者进行身份验证后,我正在打开IE中的所有4个RPs。注销第一次运行得非常好。但如果我再次登录并单击注销,则刷新后任何一个RP应用程序都会保持登录状态。我还可以看到,在ADFS/LS站

  • 我已经运行了这个脚本 但我看到,通过这样做,我们实际上是先注册服务人员,然后注销它。对我来说,这似乎不是正确的方法。 或者,我可以点击从开发工具应用程序到服务工作者附近的取消注册链接 但当我通过检查时chrome://serviceworker-internals/ 它在列表底部显示旧的和未注册的服务人员列表(见图) 那么为什么我会在这里看到冗余服务人员列表呢?什么时候更新?这是chrome浏览器