今天做了什么:

  • 重构微服务项目中使用 spring-security-oauth2 搭建 OAuth2 认证服务和资源服务的代码,减少其他模块对此的耦合度。计划将 spring-security-oauth2 迁移到 spring-security-oauth2-authorization-server 上,即使用 OAuth2.1 授权和认证。Spring Authorization Server 相关文档,可以参考 https://blog.51cto.com/u_15268610/category2

  • xuxiaowei-cloud master 分支源代码,整理 /login 登陆逻辑,参数:username、password、tenantId、clientId

登陆成功

  • 记录登陆日志
  • 转向 /login/success
    • 获取客户端信息,将授权地址、校验 token 地址返回给前端
    • 前端重定向到授权页面
      • 授权同意,则重定向到客户端表中配置的重定向地址 /oauth2/code/{id},并通过 code 去获取 token,最后再重定向到用户指定的回调地址
  • 重新梳理用户中心领域模型。

    • 领域模型:

      • 客户端,对应 OAuth 中的客户端的概念。

      • 应用

      • 租户

      • 用户

      • 角色

      • 资源

      • 区域

      • 门店

    • 领域模型之间的关系说明:

      • 客户端和应用多对的的关系,应用和租户是多对多的关系,租户和资源是多对多的关系,应用和资源一对多的关系。为了简化操作,可以创建一个中间表保存客户端、应用、租户、资源之间的关系。
      • 资源、用户、角色是 RBAC 模型。角色和应用是多对一的关系,租户和角色是一对多的关系,即角色是隶属于应用和租户。不太应用的不同租户下的角色不一样。
      • 租户和区域是一对多的关系,区域和门店是一对多的关系,门店和应用是多对多的关系。
      • 用户和租户是多对多的关系。
    • 流程:

      • 登陆:使用用户名、密码、客户端 ID、租户 ID(首次登陆时为空,取用户有权限的租户中的第一个) 登陆。通过 客户端 ID、租户 ID 、用户名查询该用户的权限。
      • 登陆之后,再选择租户进入首页。
      • 创建客户端之后,可以绑定应用。
      • 创建租户时,可以通过资源树(客户端+应用+资源)开通资源,可以给租户开通的应用开通门店。