Boen_Shi e10f050dfc feat(堡垒机检测): 支持HTTP与命令行检测并可自动刷新失效Token
- 合并检测接口到 BastionAccountController

- 新增 bastion:check-login 命令,支持 --refresh-invalid

- 检测失效后立即刷新并复检状态
2026-04-30 14:21:35 +08:00
2026-04-27 15:35:14 +08:00
2026-04-27 15:35:14 +08:00
2026-04-27 15:35:14 +08:00
2026-04-27 15:35:14 +08:00
2026-04-27 15:35:14 +08:00
2026-04-27 15:35:14 +08:00
2026-04-27 15:35:14 +08:00
2026-04-27 15:35:14 +08:00
2026-04-27 15:35:14 +08:00
2026-04-27 15:35:14 +08:00
2026-04-27 15:35:14 +08:00
2026-04-27 15:35:14 +08:00
2026-04-27 15:35:14 +08:00
2026-04-27 15:35:14 +08:00
2026-04-27 15:35:14 +08:00

Bastion SSO API

统一 SSO 登录系统后端Laravel 11用于团队内部集中管理堡垒机访问授权、服务器资源与访问审计。

主要模块

  • 登录模块:基于 tymon/jwt-auth 生成 JWT。
  • 用户及权限模块:基于 spatie/laravel-permission 实现角色与权限管理。
  • 服务器资源模块:维护服务器 asset_id/account_id/protocols 等信息。
  • 日志模块:记录用户访问服务器资源行为。
  • 堡垒机授权账号模块:维护授权账号并定时刷新 USM-AUTHENTICATIONUSM

安装与启动

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/login
    • POST /auth/logout
    • GET /auth/me
  • 用户:/usersGET/POST/GET{id}/PUT/DELETE
  • 用户权限同步:PUT /users/{id}/permissions
  • 角色:/rolesGET/POST/GET{id}/PUT/DELETE
  • 角色权限同步:PUT /roles/{id}/permissions
  • 权限:/permissionsGET/POST/GET{id}/PUT/DELETE
  • 服务器:/serversGET/POST/GET{id}/PUT/DELETE
  • 日志:/logsGET/POST
  • 授权账号:/accountsGET/POST/GET{id}/PUT/DELETE

控制器使用 hg/apidoc 注解声明,并启用了注解自动注册路由。

权限控制说明

  • 所有管理接口均通过中间件 auth:api + permission:* 控制。
  • 管理员角色:adminguard: 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
{"code":401,"message":"未认证或登录已过期","data":null}
  • 无权限返回 403
{"code":403,"message":"无权限执行此操作","data":null}

命令

  • 刷新堡垒机 tokenphp 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
No description provided
Readme 3.3 MiB
Languages
JavaScript 90%
CSS 8.3%
PHP 1.5%
Blade 0.2%