# light-oauth2 **Repository Path**: apis-cerana/light-oauth2 ## Basic Information - **Project Name**: light-oauth2 - **Description**: 基于Spring Authorization Server封装,jdk17,springboot3.x vue3开发。 支持授权码模式 客户端模式 SSO单点登录 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2025-04-03 - **Last Updated**: 2025-04-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 项目结构 | 目录 | 说明 | | :------------------------- | ---------------------------------------------- | | backend | 后端服务目录 | | backend.sql | 数据库初始化脚本 | | backend.auth-server-manage | 管理授权服务后端服务(包含用户管理,客户端管理) | | backend.oauth2-auth-server | 授权服务器 | | backend.examples | 示例合集 | | backend.agent | 客户端模式代理 | | ui | 管理授权服务前端工程 | # 技术选型 | 技术 | 版本 | 说明 | | ----------------------------------------------- | -------- | --------------------- | | jdk17 | | jdk | | node | v20.14.0 | | | mysql8 | | mysql | | spring-boot | 3.4.0 | springboot | | spring-boot-starter-oauth2-authorization-server | 3.4.0 | spring oauth2授权服务 | | mybatis-plus-spring-boot3-starter | 3.5.9 | 持久层框架 | # 项目部署 ## 1.导入脚本库 ````txt 脚本目录 backend.sql.auth_manage.sql backend.sql.auth_server.sql ```` ## 2.准备域名-host解析 ````txt 10.88.8.196 oauth2-auth-server.com 10.88.8.196 auth-server-manage.com ```` ````text 1.授权服务器域名,对应backend.oauth2-auth-server服务 oauth2-auth-server.com 2.管理授权服务器,对应backend.auth-server-manage、ui auth-server-manage.com ```` **host解析如果是部署在服务器,需要同时配置涉及的设备(本机、服务器)** ## 3.服务端构建 ````txt cd backend mvn package -DskipTests ```` ## 4.启动服务端工程 ### 1.启动 授权服务器 ````txt 文件目录 backend.oauth2-auth-server/target/oauth2-auth-server.jar 启动命令 java -jar oauth2-auth-server.jar --MYSQL_HOST= --MYSQL_PWD= --AUTH_SERVER_URL=http://oauth2-auth-server.com 变量说明: MYSQL_HOST mysql地址 MYSQL_PWD mysql密码 AUTH_SERVER_URL 授权服务器地址,即本服务未来提供授权端点的域名,即使未来适用SSL,但是此处必须配置为http开头 ```` **从日志中获取授权服务器的client Secret** ![manage-password](./images/client-secret.png) ### 2.启动管理授权服务器api服务 ````txt 文件目录 backend.backend.auth-server-manage/target/auth-server-manage.jar 启动命令 java -jar auth-server-manage.jar --MYSQL_HOST= --MYSQL_PWD= 变量说明: MYSQL_HOST mysql地址 MYSQL_PWD mysql密码 ```` **从日志中获取登录密码** ![manage-password](./images/manage-password.png) ### 3.构建前端服务 ````txt cd ui npm run build 打包dist文件目录到/usr/share/nginx/html/ui目录 ```` ### 4.配置nginx ````nginx server { listen 80 ; server_name oauth2-auth-server.com; location / { proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header REMOTE-HOST $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://127.0.0.1:8080; } } server { listen 80 ; server_name auth-server-manage.com; location / { root /usr/share/nginx/html/ui; } location /apis/ { proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header REMOTE-HOST $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://127.0.0.1:8090; rewrite ^/apis/(.*) /$1 break; } } ```` ### 5.初始化配置 ### 5.1登录系统,通过前面第2步日志中获取的admin密码登录 ![manage-password](./images/login-system.png) #### 5.2 配置用来管理授权服务器的密钥和地址,密钥从第1步启动授权服务器的密码获取 ![manage-password](./images/check-auth-server.jpg)