Skip to content
forked from iGeeky/wolf

Wolf is an authentication and authorization system based on Role-Based Access Control (RBAC) for http applications or http restful apis.

License

Notifications You must be signed in to change notification settings

awesome-security/wolf

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Introductions

wolf是一个通用RBAC系统,适用于所有的HTTP应用.统一授权及访问控制.

每个公司内部会有各种不同的后台服务及相应的管理后台.通常不同的系统会有一套自己的账号系统及权限管理模块。重复的开发使得开发资源浪费.并且不统一的账号,造成管理上的混乱。如果系统是由不同的团队来开发,这种情况将更糟糕.

本系统可以应用于各种平台,及各种系统之上. 统一账号及统一授权.并且各系统无需任何开发工作.

演示地址(因服务器不在国内,首次访问会比较慢, 还请耐心等待, 或使用docker本地运行测试):

账号 密码
admin wolf-123456
  • Restful Demo应用: Demo, 下面是测试账号及密码:
账号 密码
app-man wolf-123456
user-role-perm-man wolf-123456
log wolf-123456
  • Html Demo应用: Html Demo, 下面是测试账号及密码:
账号 密码
or_index wolf-123456
or_en wolf-123456
or_cn wolf-123456
or_changes wolf-123456
or_changes_all wolf-123456
or_cn_getting_start wolf-123456
or_suffix_match wolf-123456

注意: Html Demo应用是代理了OpenResty官网并添加了Rbac访问控制. 原网站并不需要登陆访问, 可以访问这里查看原网站.

Features

  • 语言无关,任何HTTP程序都能使用,包括但不限于:纯静态网页,JSP,PHP,ASP,PYTHON,NODE JS等WEB系统
  • 低耦合, 无侵入性, 支持新的应用不需要对应用进行任何修改与改造, 系统在代理层对资源权限进行管理
  • 自带管理后台(console模块),可对应用用户角色, 权限资源进行管理
  • 支持Restful接口, 也支持后端渲染的纯html应用
  • 支持访问日志记录与查询, 以进行审计及问题追溯.
  • 支持APISIX网关apache-apisix:wolf-rbac
  • 系统有三大模块:
    • Wolf-Server 服务实现,管理后台功能实现
    • Wolf-Console 管理后台前端代码实现
    • Wolf-Agent RBAC的Access Check代理
  • 系统包含以下实体对象:
    • Application, 应用, 支持多应用. 不同的应用可以拥有不同的权限,角色及资源. 可以查看应用下的RBAC对象关系图表.
    • User, 用户, 整体系统共享用户. 可以给用户授权的对象包括:
      • 管理员权限, 设置为管理员的用户可以登陆Console管理后台,并对应用进行管理
      • 应用列表, 可以为用户分配零到多个应用. 根据用户类型不同, 应用列表的意义也不同:
        • 对于管理员用户, 表示可以对这些应用进行管理.
        • 对于非管理员用户, 表示可以对这些应用进行登陆及使用
      • 角色, 可以为用户分配多个角色, 用户最终拥有的权限是所有角色的权限的合集
      • 权限, 可以直接为用户分配权限. 虽然标准的RBAC模型中通常不支持这种方式, 但是本系统支持
    • Role, 角色, 角色可以包含一组权限.
    • Category, 权限分类, 一种对权限进行分类(分组)的方式, 方便管理, 通常可以按大的功能模块进行分类. 在系统中权限选择框中会按分类对权限进行分组显示.
    • Permission, 权限, 权限与资源是一对多的关系, 可以一个资源一个权限, 也可以多个资源使用同一个权限.
    • Resource, 资源, 目前主要是HTTP请求. 资源的属性Match Type + Name + Action 确定一条唯一的资源. 一个资源最重要的4元组是:
      • Match Type, URL匹配类型, 支持精确匹配后缀匹配前缀匹配三种模式
      • Name, 指请求的HTTP URL. 如果是精确匹配前缀匹配, 通常是以/开头. 如果是后缀匹配, 通常是资源共有的后缀, 如: .jpg, .js, 不支持通配符或正则.
      • Action, 指请求的HTTP Method. 方法ALL能匹配所有方法.
      • Permission, 指定访问该资源需要的权限. 两个内置权限: Allow All表示所有用户可访问, Deny All表示所有用户不可访问.
    • Audit Log, 审计日志, 记录了所有经过本系统的访问情况(包含Wolf-Console及本系统管理的应用). 记录了以下主要信息:
      • 用户ID, 用户名, 用户昵称
      • 访问日期, 时间及访问者的IP
      • HTTP方法,及URL,
      • 匹配上的资源.
      • 访问响应的状态码.
      • 请求args参数或request body(只支持了Wolf-Console的记录).
  • 资源匹配方式, 支持不同的优先级, 优先级规则如下:
    • Match Type优先级从高到低, 依次是: 精确匹配, 后缀匹配, 前缀匹配.
    • ActionHTTP Method. ALL优先级比较低, 其它方法(如GET, POST, PUT)优先级相同, 但都比ALL高.
    • NameHTTP URL. 优先级与URL长度有关, URL越长优先级越高.

注意: 本文中的URL仅指URL标准中的path部分, 不包含域名,端口及参数部分

Architecture

Architecture

Relations

Relations

Technologies

  • Server: NodeJS, KOA, Sequelize, JWT
  • Console: VueJS, Element, Babel, NodeJS
  • Agent: OpenResty(ngx_lua)
  • Database: PostgreSQL.

Getting Started

快速起步

Preview

Console

应用列表
应用列表
应用列表
应用,用户,角色,权限关系图
用户管理
用户管理
角色管理
角色管理
角色的权限详情
角色的权限详情/权限分组显示
权限管理
权限管理
审核日志
审核日志

Client/Demo

客户端登陆
客户端登陆
主页面
主页面(注意: 顶部添加了信息栏)
无权限页
无权限页

Deployment

部署文档

Manual Document

使用指南

Change Log

Change Log

License

MIT

About

Wolf is an authentication and authorization system based on Role-Based Access Control (RBAC) for http applications or http restful apis.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 55.6%
  • Vue 34.2%
  • Lua 4.1%
  • CSS 2.8%
  • HTML 1.7%
  • PLpgSQL 0.9%
  • Other 0.7%