- 强制改密用户修改密码时无需 current_password - 保持其余接口返回423以阻止未改密操作
Bastion SSO API
统一 SSO 登录系统后端(Laravel 11),用于团队内部集中管理堡垒机访问授权、服务器资源与访问审计。
主要模块
- 登录模块:基于
tymon/jwt-auth生成 JWT。 - 用户及权限模块:基于
spatie/laravel-permission实现角色与权限管理。 - 服务器资源模块:维护服务器
asset_id/account_id/protocols等信息。 - 日志模块:记录用户访问服务器资源行为。
- 堡垒机授权账号模块:维护授权账号并定时刷新
USM-AUTHENTICATION与USM。
安装与启动
composer install
cp .env.example .env
php artisan key:generate
php artisan jwt:secret --force
按需将 .env 的数据库配置改为 MySQL:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=bastion_sso
DB_USERNAME=root
DB_PASSWORD=secret
然后执行:
php artisan migrate
php artisan serve
RBAC 初始化(推荐)
首次部署建议初始化权限点和默认角色:
php artisan user:manage init-rbac
将某个用户设为管理员(拥有全部权限):
php artisan user:manage set-admin --email=admin@example.com
取消管理员:
php artisan user:manage unset-admin --email=admin@example.com
接口说明
- 认证:
POST /auth/loginPOST /auth/logoutGET /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/manageplatform.roles.view/manageplatform.permissions.view/manageplatform.servers.view/manageplatform.accounts.view/manageplatform.logs.view/manageresource.servers.use
统一错误响应
- 未认证返回
401:
{"code":401,"message":"未认证或登录已过期","data":null}
- 无权限返回
403:
{"code":403,"message":"无权限执行此操作","data":null}
命令
- 刷新堡垒机 token:
php artisan bastion:refresh-tokens - 用户与权限管理:
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}
常见示例:
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。
Description
Languages
JavaScript
90%
CSS
8.3%
PHP
1.5%
Blade
0.2%