sa-token/sa-token-doc/oauth2/oauth2-questions.md
2024-08-28 12:44:10 +08:00

2.0 KiB
Raw Blame History

Sa-Token-OAuth2整合-常见问题总结

OAuth2 集成常见问题整理

toc


问:搭建好 oauth2-server 服务后,访问返回:{"msg": "not handle"}

返回这个信息,代表你访问的路由有错误,比如说:

  • 统一认证登录地址是:http://{host}:{port}/oauth2/authorize
  • 而你访问的却是:http://{host}:{port}/oauth2/authorize2

地址写错了,框架就不会处理这个请求,会直接返回 {"msg": "not handle"},所有开放地址可参考:OAuth2 开放接口

如果仔细检查地址后没有写错,却依然返回了这个信息,那有可能是对应的接口没有打开,比如说:

  • sso-server 端的单点注销地址:http://{host}:{port}/sso/signout
  • sso-client 端的注销地址:http://{host}:{port}/sso/logout

都需要在配置文件配置:sa-token.sso.is-slo=true后,才会打开。

问:我参照文档搭建 oauth2-server一直提示code 无效,请问怎么回事?

一个 code 码只能使用一次,多次使用就会报这个错。

Sa-Token-OAuth2 怎么集成多账号模式?

configOAuth2Server 里指定 oauth2 模块使用的 StpLogic 对象即可:

// Sa-Token OAuth2 定制化配置
@Autowired
public void configOAuth2Server(SaOAuth2ServerConfig oauth2Server) {
	// 其它配置 ... 
	
	// 指定 oauth2 模块使用的 `StpLogic` 对象 
	SaOAuth2Manager.setStpLogic(StpUserUtil.stpLogic);
}

问:授权码流程中 state 参数是干吗用的?

state 参数用于验证授权码流程的发起端和接受端是否为同一个客户端以防止OAuth-Server账号伪装攻击。

授权流程发起端必须保证:

  • state 参数必须足够随机,不可被预测。
  • state 参数与授权码流程发起客户端 一 一 对 应,授权流程发起时创建的 state 必须与接受时返回的 state 值一致。
  • 安全起见,一个 state 参数只允许使用一次。