# Bastion SSO API 统一 SSO 登录系统后端(Laravel 11),用于团队内部集中管理堡垒机访问授权、服务器资源与访问审计。 ## 主要模块 - 登录模块:基于 `tymon/jwt-auth` 生成 JWT。 - 用户及权限模块:基于 `spatie/laravel-permission` 实现角色与权限管理。 - 服务器资源模块:维护服务器 `asset_id/account_id/protocols` 等信息。 - 日志模块:记录用户访问服务器资源行为。 - 堡垒机授权账号模块:维护授权账号并定时刷新 `USM-AUTHENTICATION` 与 `USM`。 ## 安装与启动 ```bash composer install cp .env.example .env php artisan key:generate php artisan jwt:secret --force ``` 按需将 `.env` 的数据库配置改为 MySQL: ```env DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=bastion_sso DB_USERNAME=root DB_PASSWORD=secret ``` 然后执行: ```bash php artisan migrate php artisan serve ``` ## RBAC 初始化(推荐) 首次部署建议初始化权限点和默认角色: ```bash php artisan user:manage init-rbac ``` 将某个用户设为管理员(拥有全部权限): ```bash php artisan user:manage set-admin --email=admin@example.com ``` 取消管理员: ```bash php artisan user:manage unset-admin --email=admin@example.com ``` ## 接口说明 - 认证: - `POST /auth/login` - `POST /auth/logout` - `GET /auth/me` - 用户:`/users`(GET/POST/GET{id}/PUT/DELETE) - 用户权限同步:`PUT /users/{id}/permissions` - 角色:`/roles`(GET/POST/GET{id}/PUT/DELETE) - 角色权限同步:`PUT /roles/{id}/permissions` - 权限:`/permissions`(GET/POST/GET{id}/PUT/DELETE) - 服务器:`/servers`(GET/POST/GET{id}/PUT/DELETE) - 日志:`/logs`(GET/POST) - 授权账号:`/accounts`(GET/POST/GET{id}/PUT/DELETE) 控制器使用 `hg/apidoc` 注解声明,并启用了注解自动注册路由。 ## 权限控制说明 - 所有管理接口均通过中间件 `auth:api` + `permission:*` 控制。 - 管理员角色:`admin`(guard: `api`)默认拥有所有平台权限。 - 平台权限粒度示例: - `platform.users.view/manage` - `platform.roles.view/manage` - `platform.permissions.view/manage` - `platform.servers.view/manage` - `platform.accounts.view/manage` - `platform.logs.view/manage` - `resource.servers.use` ## 统一错误响应 - 未认证返回 `401`: ```json {"code":401,"message":"未认证或登录已过期","data":null} ``` - 无权限返回 `403`: ```json {"code":403,"message":"无权限执行此操作","data":null} ``` ## 命令 - 刷新堡垒机 token:`php artisan bastion:refresh-tokens` - 用户与权限管理: ```bash php artisan user:manage {create|reset-password|list|init-rbac|create-role|assign-role|remove-role|assign-permission|remove-permission|grant-server|set-admin|unset-admin} ``` 常见示例: ```bash php artisan user:manage create --email=user@example.com --nickname=user --password=secret123 php artisan user:manage assign-role --email=user@example.com --role=operator php artisan user:manage assign-permission --email=user@example.com --permission=platform.logs.view php artisan user:manage grant-server --email=user@example.com --server-id=1 --ssh=1 --sftp=1 --rdp=0 ``` ## 定时任务 调度任务在 `routes/console.php` 中配置,每 10 分钟刷新一次堡垒机 token。