Wolf是一个通用的RBAC权限系统,适用于所有的HTTP应用。它提供统一的授权和访问控制功能。
在每个公司内部,通常会有各种不同的后台服务及相应的管理后台。不同的系统往往会有自己独立的账号系统和权限管理模块。这种重复开发导致了开发资源的浪费,而且不统一的账号体系会造成管理上的混乱。如果这些系统是由不同的团队开发的,问题将更加复杂。
Wolf系统可以应用于各种平台和系统之上,实现统一的账号和授权管理。而且无需对各系统进行任何开发修改工作。
Wolf系统具有以下主要特点:
- 语言无关: 适用于任何HTTP应用,包括纯静态网页、JSP、PHP、ASP、Python、Node.js等Web系统
- 低耦合、无侵入性: 新应用接入无需修改,系统在代理层管理资源权限
- 支持Restful接口和后端渲染的纯HTML应用
- 认证源:
- 密码认证: 使用系统内部存储的用户名和密码
- LDAP认证: 通过外部LDAP服务器进行用户认证
- 认证协议:
- JWT (JSON Web Token): 用于生成和验证访问令牌
- HTTP Basic Auth: 支持用户名和密码的基本认证
- 授权协议:
- OAuth 2.0: 支持其他应用使用Wolf账号登录和授权
- 自带管理后台(console模块): 可管理应用、用户、角色、权限和资源
- 支持访问日志记录与查询,便于审计和问题追溯
- 支持查看应用下的RBAC对象关系图表
- 多语言支持(i18n): Console支持中英文语言切换
- 可视化RBAC关系图表,便于理解权限结构
- 支持radixtree高级路由,实现高性能、复杂的URL匹配
- 支持PostgreSQL和MySQL数据库
- 使用Redis缓存提升性能
- 支持APISIX网关集成
- 三个主要模块:
- Wolf-Server: 服务实现和管理后台功能
- Wolf-Console: 管理后台前端代码
- Wolf-Agent: RBAC的Access Check代理
-
应用(Application):支持多个应用,不同的应用可以拥有不同的权限、角色和资源。可以查看应用下的RBAC对象关系图表。
-
用户(User):整个系统共享用户。可以为用户授权的对象包括:
- 管理员权限:设置为管理员的用户可以登录
Console管理后台,并对应用进行管理。 - 应用列表:可以为用户分配零到多个应用。根据用户类型的不同,应用列表的含义也不同:
- 对于管理员用户,表示可以对这些应用进行管理。
- 对于非管理员用户,表示可以登录和使用这些应用。
- 角色:可以为用户分配多个角色,用户最终拥有的权限是所有角色的权限的合集。
- 权限:可以直接为用户分配权限。尽管标准的RBAC模型通常不支持这种方式,但本系统支持。
- 管理员权限:设置为管理员的用户可以登录
-
角色(Role):角色可以包含一组权限。
-
权限分类(Category):一种对权限进行分类(分组)的方式,方便管理,通常可以按照大的功能模块进行分类。在系统中的权限选择框中,权限会按照分类进行分组显示。
-
权限(Permission):权限与资源是一对多的关系,可以为一个资源分配一个权限,也可以多个资源使用同一个权限。
-
资源(Resource):目前主要指HTTP请求。资源的属性包括
匹配类型+名称+动作,以确定唯一的资源。一个资源的重要属性有:- 匹配类型 (Match Type):
- 不启用
radixtree路由时: URL的匹配方式,支持精确匹配、后缀匹配和前缀匹配三种模式。 - 启用
radixtree路由时: 支持radixtree一种模式,精确匹配、后缀匹配和前缀匹配通过name的语法来实现。
- 不启用
- 名称 (Name):指HTTP URL。
- 不启用
radixtree路由时: 如果是精确匹配和前缀匹配,通常以/开头。如果是后缀匹配,通常是资源共有的后缀,例如.jpg、.js。不支持通配符或正则表达式。 - 启用
radixtree路由时: 默认采用精确匹配。使用*进行前缀匹配:/foo*匹配/foobar,但不匹配/foo/bar。使用**进行任意匹配:/foo**匹配/foo/bar和/foo/car/far。使用**进行后缀匹配:**.jpg匹配/images/photo.jpg和/uploads/profile.jpg。
- 不启用
- 动作 (Action):指HTTP方法。
ALL能匹配所有方法。 - 权限 (Permission):指访问该资源需要的权限。系统内置了两个权限:
Allow All表示所有用户都可以访问,Deny All表示所有用户都不可访问。
- 匹配类型 (Match Type):
-
审计日志(Audit Log):记录了所有经过本系统的访问情况(包括
Wolf-Console和本系统管理的应用)。主要记录以下信息:- 用户ID、用户名、用户昵称;
- 访问日期、时间和访问者的IP;
- HTTP方法和URL;
- 匹配上的资源;
- 访问响应的状态码;
- 请求参数或请求正文(仅支持
Wolf-Console的记录)。
- 丰富的测试用例,代码覆盖率90%以上
- 资源匹配支持不同优先级规则:
匹配类型的优先级从高到低依次为:精确匹配、后缀匹配、前缀匹配。- 动作(即HTTP方法)的优先级:ALL优先级较低,其他方法(如GET、POST、PUT)优先级相同,但都高于ALL。
- 名称(即HTTP URL)的优先级与URL的长度有关,URL越长,优先级越高。
注意: 本系统中的URL仅指URL标准中的path部分,不包含域名、端口及参数部分
- Server: NodeJS, KOA, Sequelize, JWT
- Console: Vue 3, Element Plus, Vite, TypeScript, Pinia, Tailwind CSS
- Agent: OpenResty(ngx_lua)
- Database: PostgreSQL.
- Cache: Redis
使用 Docker Compose 快速启动 Wolf 系统:
# 克隆仓库
git clone https://github.com/iGeeky/wolf.git
cd wolf/quick-start-with-docker
# 启动所有服务
docker-compose up启动后访问:
- 管理后台: http://localhost:12180 (admin/wolf-123456)
- 演示应用: http://localhost:12200
详细说明请查看快速起步指南
![]() |
|---|
| 应用列表 |
![]() |
|---|
| 应用,用户,角色,权限关系图 |
![]() |
|---|
| 用户管理 |
![]() |
|---|
| 角色管理 |
![]() |
|---|
| 角色的权限详情/权限分组显示 |
![]() |
|---|
| 权限管理 |
![]() |
|---|
| 审核日志 |
![]() |
|---|
| 客户端登陆 |
![]() |
|---|
| 主页面(注意: 顶部添加了信息栏) |
![]() |
|---|
| 无权限页 |











