sa-token/sa-token-doc/oauth2
2025-03-28 16:55:03 +08:00
..
oauth2-apidoc.md docs: 修复文档部分不准确描述 2024-10-30 11:42:39 +08:00
oauth2-at-check.md 新增sa-token-oauth2 注解鉴权 2024-08-25 14:02:50 +08:00
oauth2-check-domain.md docs: 修复 OAuth2 相关文档不正确描述之处 2024-10-30 16:24:26 +08:00
oauth2-custom-api.md 细节优化、文档优化 2024-08-23 16:18:24 +08:00
oauth2-custom-grant_type.md feat(oauth2): 为 Access-Token、Client-Token 添加 grantType 字段,以记录该数据的授权类型 2024-11-27 07:41:30 +08:00
oauth2-custom-login.md 细节优化、文档优化 2024-08-23 16:18:24 +08:00
oauth2-custom-scope.md 修复文档错误 2024-09-02 17:41:06 +08:00
oauth2-data-loader.md docs(oauth2): 新增 UnionId 描述 2024-11-29 11:33:10 +08:00
oauth2-dev.md docs: 补全 1.40.0 版本更新文档 2025-01-31 06:00:43 +08:00
oauth2-h5.md docs(oauth2): 文档新增 oauth2 server 前后台分离参考支持 2025-01-06 14:33:01 +08:00
oauth2-interworking.md refactor: SaLoginModel -> SaLoginParameter 2025-03-01 21:15:37 +08:00
oauth2-oidc.md 新增 StpLogic#getOrCreateLoginSession 方法,获取指定账号 id 的登录会话数据,如果获取不到则创建并返回 2024-08-24 17:55:46 +08:00
oauth2-openid.md docs: 修复 unionid 章节错误描述 2025-03-28 16:55:03 +08:00
oauth2-questions.md 完善赞助者名单 2024-08-28 12:44:10 +08:00
oauth2-scope-level.md docs(oauth2): 修整滞后的配置信息示例 2025-01-03 03:31:36 +08:00
oauth2-server.md docs: 补全 1.40.0 版本更新文档 2025-01-31 06:00:43 +08:00
readme.md docs: 优化 OAuth2 简述章节描述文档 2025-03-06 20:54:04 +08:00

Sa-Token-OAuth2.0 模块


什么是 OAuth2.0 ?解决什么问题?

OAuth2.0 与 SSO 相比,增加了对应用授权范围的控制,减弱了应用之间数据同步的能力。

有关 OAuth2.0 的设计思想网上教程较多,此处不再重复赘述,详细可参考博客: OAuth2.0 简单解释

如果你还不知道你的项目应该选择 SSO 还是 OAuth2.0,可以参考这篇:技术选型:[ 单点登录 ] VS [ OAuth2.0 ]

OAuth2.0 四种模式

基于不同的使用场景OAuth2.0设计了四种模式:

  1. 授权码Authorization CodeOAuth2.0 标准授权步骤Server 端向 Client 端下放 CodeClient 端再用 Code 码换取授权 Access-Token
  2. 隐藏式Implicit无法使用授权码模式时的备用选择Server 端使用 URL 重定向方式直接将 Access-Token 下放到 Client 端页面。
  3. 密码式PasswordClient 端直接拿着用户的账号密码换取授权 Access-Token
  4. 客户端凭证Client CredentialsServer 端针对 Client 级别的 Token代表应用自身的资源授权。

https://oss.dev33.cn/sa-token/doc/oauth2/sa-oauth2-setup.png

接下来我们将通过简单示例演示如何在 Sa-Token-OAuth2 中完成这四种模式的对接: 搭建OAuth2-Server

OAuth2.0 第三方开放平台完整开发流程参考

  1. oauth2-server 平台端

    1. 搭建 oauth2-server 数据后台管理端(后台人员对底层数据增删改查维护的地方)。
    2. 搭建 oauth2-server 数据前台申请端(给第三方公司提供一个申请注册 client 的地方)。
    3. 搭建 oauth2-server 授权端 以及其接口文档(让第三方公司拿到 access_token
    4. 搭建 oauth2-server 资源端 以及其接口文档(让第三方公司通过 access_token 拿到对应的资源数据)。
    5. 以上四端可以为一个项目,也可以为四个独立的项目。
  2. oauth2-client 第三方公司端

    1. 第三方公司登录 oauth-server 数据前台申请端,申请注册应用,拿到 clientIdclientSecret 等数据。
    2. 根据自己的业务选择对应的 scope 申请签约,等待平台端审核通过。
    3. 在自己系统通过 clientIdclientSecret 等参数对接 oauth2-server 授权端,拿到 access_token
    4. 通过 access_token 调用 oauth2-server 资源端接口,拿到对应资源数据。
  3. 用户端操作

    1. 打开第三方公司开发的网站或APP等程序。
    2. 一般有个“通过xx第三方登录”的按钮点它。
    3. 跳转到了 oauth2-server 端的网站,在此网站用 oauth2-server 的账号开始登录。
    4. 登录完成,继续跳转到授权页,点击确认授权。
    5. 授权完成oauth2-server 端生成一个 code 码,重定向回 oauth2-client 的网站,把 code 参数挂到对应的 url 上。
    6. oauth2-client 从 url 中读取 code 参数,提交到 oauth2-client 的后端。
    7. oauth2-client 后端拿着 codeclientIdclientSecret 等信息调用 oauth2-server 授权端 的接口,得到 access_token
    8. 继续拿着 access_token 调用 oauth2-server 资源端获取此用户对应的数据。
    9. 一般最终目的拿到一个 openid 值oauth2-client 根据 openid 进行登录。生成自己的会话 token ,返回到数据到前端。
    10. 前端拿到自己 oauth2-client 生成的会话 token ,完成登录。开始进行业务操作。