# distributed-security **Repository Path**: Hellwalker001/distributed-security ## Basic Information - **Project Name**: distributed-security - **Description**: 基于spring security + spring security oauth2.0的分布式微服务认证框架 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-01-31 - **Last Updated**: 2024-01-31 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # distributed-security #### 介绍 基于Spring Security + Spring Security Oauth2 + RBAC权限控制的分布式微服务认证框架。 #### 软件架构 软件架构: 1. JDK 1.8 2. MySQL 5.7 3. SpringBoot 2.1.3 4. SpringCloud 5. Spring Security 6. Spring Security Oauth2 7. MyBatis 8. Freemarker 9. Fastjson 10. Lombok #### 安装教程 1. 创建数据库 - 创建MySQL数据库,数据库名`user_db`,编码格式为`UTF-8`。 - 执行**doc**目录下的`user_db.sql`SQL文件创建表、导入数据。 2. 启动微服务 依次启动以下微服务应用: - 启动注册中心`DiscoveryServer` - 启动网关服务`GatewayServer` - 启动认证服务`UAAServer` - 启动订单服务`OrderServer` - 启动商品服务`GoodsServer` #### 应用测试 主要使用 **Postman** 工具测试这个系统。 ##### 1. 使用OAuth2.0 密码授权模式申请token **(1)请求地址** ```http http://localhost:53010/uaa/oauth/token ``` - 其中端口53010为网关端口; - `/uaa/oauth/token` 为 OAutho2.0 令牌申请端点,`/uaa` 为自定义的servlet-context-path 前缀。 **(2)请求参数** 使用post请求,`form-data`表单类型的参数。 - grant_type:授权类型,为`password`密码模式; - username:用户名,为系统用户的用户名; - password:密码,为系统用户设置的密码; - client_id:客户端ID,为OAuth体系中的客户端角色,在表oauth_client_details 字段client_id, 比如系统的使用者为前端系统,那么可以设置为pc_web,表明是该系统的一个接入端。 - client_secret:客户端密钥。 如下图所示: ![image-20240131095156471](doc/asset/image-20240131095156471.png) **(3)响应结果** ![image-20240131095524286](doc/asset/image-20240131095524286.png) ##### 2.校验Token 请求OAuth check_token端点校验token,主要是查询一些权限信息。 **(1)请求地址:** ```http http://localhost:53010/uaa/oauth/check_token ``` **(2)请求参数:** 使用post请求,`form-data`表单类型的参数。 - key:token - value:access_token **(3)响应:** ![image-20240131095925103](doc/asset/image-20240131095925103.png) ##### 3.使用token访问资源 使用申请到的access_token访问资源服务器的资源。 **(1)请求地址:** ```http http://localhost:53010/order/r1 ``` **(2)请求参数:** GET请求,需要在请求头Header添加认证信息: - key:Authorization - value:Bearer access_token【中间一个有英文空格】 **(3)响应:** ![image-20240131100331817](doc/asset/image-20240131100331817.png) #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request #### 特技 1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md 2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com) 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目 4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目 5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) 6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/) #### gitee参考教程 https://blog.csdn.net/qq_45860901/article/details/125473713