sa-token-oauth2
|
|
基于 sa-token-doc/oauth2/ 全部 17 个文档。基础认证使用 sa-token 技能。
| 模式 | 适用场景 | 说明 | |------|----------|------| | 授权码(Authorization Code) | 有后端的Web应用 | 最常用,安全性最高 | | 隐式(Implicit) | 纯前端应用 | 已不推荐使用 | | 密码(Password) | 信任的客户端 | 自家APP使用 | | 客户端凭证(Client Credentials) | 服务间调用 | 无需用户授权 |
Step 1. 引入依赖 — 添加 sa-token-oauth2 依赖
Step 2. 实现DataLoader — SaOAuth2DataLoaderImpl 加载客户端和Scope数据
Step 3. 配置Server端点 — 注册 authorize/token/validate/refresh 接口
Step 4. 配置OAuth2参数 — 设置Token有效期、授权模式等
Step 5. 测试授权流程 — 使用授权码模式验证端到端流程
Step 6. 上线前安全加固 — 开启域名校验、配置回调白名单
| 主题 | 文件 | 来源 | |------|------|------| | Server搭建+DataLoader | references/oauth2-server.md | oauth2-server、oauth2-apidoc | | DataLoader+域名校验+自定义 | references/oauth2-data-loader.md | data-loader、check-domain | | Scope权限自定义与分级 | references/oauth2-scope.md | custom-scope、scope-level |
Q: OAuth2和SSO有什么区别? A: OAuth2解决授权问题(第三方应用访问用户数据),SSO解决认证问题(统一登录)。需要第三方授权选OAuth2,仅需统一登录选SSO。也可两者结合使用。
Q: 四种授权模式选哪种? A: 有后端的Web应用选授权码模式(最安全)。自家APP选密码模式。服务间调用选客户端凭证模式。隐式模式已不推荐。
Q: 如何自定义Scope?
A: 实现 SaOAuth2DataLoader.getScope() 方法,返回 SaScopeObject 对象,可设置scope名称、描述、是否默认选中。
Q: 如何保证OAuth2服务安全?
A: 1) 配置 is-check-domain: true 校验回调域名;2) 配置 allow-url 白名单;3) 生产环境关闭 isAutoMode;4) 使用HTTPS。
Q: 支持刷新Token吗?
A: 支持。refresh-token-timeout 默认30天,调用 /oauth2/refresh 接口刷新。
Q: 前后端分离怎么对接OAuth2?
A: 前端通过URL参数接收code,调用后端 /oauth2/token 接口换取AccessToken,保存到本地存储。
access-token-timeout 配置allow-domains 时要包含所有合法客户端本技能不收集、存储或传输任何用户数据。所有代码示例仅供本地开发参考。