统一认证登录注销接口改进建议

Blade 未结 1 88
qdieslab
qdieslab 剑圣 2025-08-31 10:29

一、该问题的重现步骤是什么?

1. 通过第三方认证接口/oauth/render访问bladex的统一认证平台,无法通过/oauth/revoke注销,并且谁都可以调用注销接口,不够安全


这里提供一个改进思路,请指正

一、/oauth/authorize

读取session.getId,根据sessionId从redis查找统一认证用户信息,未找到,跳转登录统一认证页面,已找到或者统一认证登录后,跳转/oauth/authorize/perform

二、/oauth/authorize/perform

生成认证码code,执行saveCode时缓存用户和sessionId

三、/oauth/token,认证码登录模式

根据code读取到用户和sessionId,进行认证,认证完成后,根据生成的token缓存sessionId

四、/oauth/authorize/logout

接口调用时要求传入token参数(这里也确保执行注销的是已经认证过的用户),根据token读取缓存的sessionId,删除sessionId缓存的统一认证用户,完成注销操作


二、你期待的结果是什么?实际看到的又是什么?


三、你正在使用的是什么产品,什么版本?在什么操作系统上?


四、请提供详细的错误堆栈信息,这很重要。


五、若有更多详细信息,请在下面提供。

1条回答
  • 2025-08-31 15:30

    第三方认证用的是justauth,他的接口可以看这里,使用的公司非常多,也没有看到说不安全的情况:https://justauth.cn/guide/quickstart/how-to-use/#%E5%8F%96%E6%B6%88%E6%8E%88%E6%9D%83


    justauth的体系和bladex自带的oauth2没有任何关系,没法关联,你应该是理解错了。


    bladex自带的oauth2模式也是采用的spring官方设计模式。并且现在很多大型系统的退出(如阿里云)也是通过url跳转至单点指定URL的方案,所以你这种 jwt+session+redis 揉杂在一起的想法不予采纳。如果你要和token关联,就不要用session,直接用jwt+redis来实现,但是这样的方案才是你上面说的谁都可以调用。


    0 讨论(0)
提交回复