casbin

轻量级访问控制框架
授权协议 Apache
开发语言 Google Go
所属分类 程序开发、 安全相关框架
软件类型 开源软件
地区 国产
投 递 者 龚星洲
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

casbin 是一个用 Go 语言打造的轻量级开源访问控制框架,采用了元模型的设计思想,支持多种经典的访问控制方案,如基于角色的访问控制 RBAC、基于属性的访问控制 ABAC 等。

casbin 的主要特性包括:

  1. 支持自定义请求的格式,默认的请求格式为{subject, object, action};

  2. 具有访问控制模型 model 和策略 policy 两个核心概念;

  3. 支持 RBAC 中的多层角色继承,不止主体可以有角色,资源也可以具有角色;

  4. 支持超级用户,如 root 或 Administrator,超级用户可以不受授权策略的约束访问任意资源;

  5. 支持多种内置的操作符,如 keyMatch,方便对路径式的资源进行管理,如 /foo/bar 可以映射到 /foo*;

casbin 不做的事情:

  1. 身份认证 authentication(即验证用户的用户名、密码),casbin 只负责访问控制。应该有其他专门的组件负责身份认证,然后由 casbin 进行访问控制,二者是相互配合的关系;

  2. 管理用户列表或角色列表。casbin 认为由项目自身来管理用户、角色列表更为合适,casbin 假设所有策略和请求中出现的用户、角色、资源都是合法有效的。

安装

go get github.com/hsluoyz/casbin

HelloWorld 例子

初始化一个 enforcer,传入两个参数:模型文件路径和策略文件路径;

e := &Enforcer{}
e.Init("examples/basic_model.conf", "examples/basic_policy.csv")

在你的代码需要进行访问控制的位置,加入如下钩子;

sub := "alice"
obj := "data1"
act := "read"

if e.Enforce(sub, obj, act) == true {
    // permit alice to read data1
} else {
    // deny the request, show an error
}

采用管理API进行权限的管理,如获取一个用户所有的角色;

roles := e.GetRoles("alice")

请参考 _test.go 测试文件获得更多的使用方法。

  • Casbin 可以做到: 支持自定义请求的格式,默认的请求格式为{subject, object, action}。 具有访问控制模型 model 和策略 policy 两个核心概念。 支持 RBAC 中的多层角色继承,不止主体可以有角色,资源也可以具有角色。 支持超级用户,如 root 或 Administrator ,超级用户可以不受授权策略的约束访问任意资源。 支持多种内置的操作符,如 ke

  • Model Model语法 Model CONF 至少应包含四个部分: [request_definition], [policy_definition], [policy_effect], [matchers]。 如果 model 使用 RBAC, 还需要添加[role_definition]部分。 Model CONF 文件可以包含注释。注释以 # 开头, # 会注释该行剩余部分。 reque

  • casbin学习 一、背景 1. Casbin是什么 Casbin 是一个授权库,在我们希望特定用户访问特定的 对象 或实体的流程中可以使用 主题 访问类型,例如 动作 可以是 读取, 写入, 删除 或开发者设置的任何其他动作。 这是Casbin最广泛的使用,它叫做"标准" 或经典 { subject, object, action } 流程。 Casbin能够处理除标准流量以外的许多复杂的许可使

  • perm元模型 policy是策略或者说是规则的定义。它定义了具体的规则。 request是对访问请求的抽象,它与e.Enforce()函数的参数是一一对应的 matcher匹配器会将请求与定义的每个policy一一匹配,生产多个匹配结果 effect根据对请求运用匹配器得出的所有结果进行汇总,来决定该请求时允许还是拒绝 首先编写模型文件: [request_definition] r = sub

  • Casbin框架 Casbin是一个强大的、高效的开源访问控制框架,其权限管理机制支持多种访问控制模型。 官网:https://casbin.org/docs/zh-CN/rbac-with-domains-api 中文文档:https://casbin.org/docs/zh-CN/overview RBAC API:https://casbin.org/docs/zh-CN/rbac-api

  • 要做一个python web系统,做简单的信息管理和案例展示,还要考虑后续功能的扩展。就想着自己搭建一个python web框架。本来想着像.net、java一样,有现成的脚手架项目,拿来改吧改吧就用了,结果发现Python web这一块还真是奇葩: 很多python web应用或脚手架的维护3~4年前就已经停止维护了 只有python web的基础框架,像flask、Django,倒是维护的挺活

  • casbin快速入门 casbin将访问控制模型抽象到一个基于 PERM(Policy,Effect,Request,Matchers) 元模型的配置文件(模型文件)中 policy是策略或者说是规则的定义。它定义了具体的规则。 request是对访问请求的抽象,它与e.Enforce()函数的参数是一一对应的 matcher匹配器会将请求与定义的每个policy一一匹配,生成多个匹配结果。 ef

  • casbin官方文档:Overview · Casbin casbin是一个规则的管理(角色拥有哪些权限、用户拥有哪些角色),实现了较为难管理的规则模块。用户、角色、权限三个具体的角色需要应用自己管理 依赖: "github.com/casbin/casbin/v2" "github.com/casbin/casbin/v2/model" "github.com/casbin/gorm-adapt

  • 安装 $ go get github.com/casbin/casbin/v2 import "github.com/casbin/casbin/v2" func main() { e, err := casbin.NewEnforcer("path/to/model.conf", "path/to/policy.csv") } 创建文件 在当前目录下创建model.conf与policy

  • casbin是一个强大、高效的访问控制库。支持常用的多种访问控制模型,如ACL/RBAC/ABAC等。可以实现灵活的访问权限控制。同时,casbin支持多种编程语言,Go/Java/Node/PHP/Python/.NET/Rust。本文以Go作为示例进行描述。 一、例子1 先来看第一个例子,在这个例子中,我们控制用户名为“admin”的用户对web路径“/user/*”,有“get”的访问权限,

 相关资料
  • 本文向大家介绍jquery.zclip轻量级复制失效问题,包括了jquery.zclip轻量级复制失效问题的使用技巧和注意事项,需要的朋友参考一下 工作原理 利用一个透明的 Flash ,让其漂浮在按钮之上,这样其实点击的不是按钮而是 Flash ,也就可以使用 Flash 的复制功能了 以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持呐喊教程!

  • 主要内容:问题起源,Eureka Server设计精妙的注册表存储结构,Eureka Server端优秀的多级缓存机制,总结问题起源 Spring Cloud架构体系中,Eureka是一个至关重要的组件,它扮演着微服务注册中心的角色,所有的服务注册与服务发现,都是依赖Eureka的。 不少初学Spring Cloud的朋友在落地公司生产环境部署时,经常会问: Eureka Server到底要部署几台机器? 我们的系统那么多服务,到底会对Eureka Server产生多大的访问压力? Eureka

  • 本文向大家介绍Python轻量级ORM框架Peewee访问sqlite数据库的方法详解,包括了Python轻量级ORM框架Peewee访问sqlite数据库的方法详解的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Python轻量级ORM框架Peewee访问sqlite数据库的方法。分享给大家供大家参考,具体如下: ORM框架就是 object relation model,对象关系模型,

  • 大多数Web应用程序在使用户可以访问该功能之前验证功能级别访问权限。但是,如果未在服务器上执行相同的访问控制检查,则黑客无法在未经适当授权的情况下进入应用程序。 我们将通过以下每项来了解这个漏洞的威胁代理,攻击向量,安全弱点,技术影响和业务影响。 威胁代理 - 具有网络访问权限的任何人都可以向应用程序发送请求。 攻击者的方法 - 谁是授权系统用户,只需将URL或参数更改为特权函数即可。 安全弱点

  • 访问控制限制其他源文件和模块对你的代码的访问。这个特性允许你隐藏代码的实现细节,并指定一个偏好的接口让其他代码可以访问和使用。 你可以给特定的单个类型 (类,结构体和枚举)设置访问级别,比如说属性、方法、初始化器以及属于那些类型的下标。协议可以限制在一定的范围内使用,就像全局常量,变量,函数那样。 除了提供各种级别的访问控制,Swift 为典型场景提供默认的访问级别,减少了显式指定访问控制级别的需

  • 访问控制用于设置访问负载均衡的IP白名单或IP黑名单。 访问控制用于设置访问负载均衡的IP白名单或IP黑名单,在访问控制策略组中仅可以设置IP地址范围,在配置负载均衡实例监听时可设置是否启用访问控制,并设置针对具体的访问控制策略组设置访问白名单或黑名单。 访问控制来源: 同步公有云上被实例上的监听绑定的访问控制,并自动在访问控制缓存里添加一条记录,同步下来的访问控制默认本域共享。 在云管平台上创建

  • 本文向大家介绍轻量级javascript 框架Backbone使用指南,包括了轻量级javascript 框架Backbone使用指南的使用技巧和注意事项,需要的朋友参考一下 Backbone 是一款基于模型-视图-控制器 MVC 模式的轻量级javascript 框架 ,可以用来帮助开发人员创建单页Web应用。 借助Backbone 我们可以使用REST的方式来最小化客户端和服务器间的数据传输,

  • 本文向大家介绍前端轻量级MVC框架CanJS详解,包括了前端轻量级MVC框架CanJS详解的使用技巧和注意事项,需要的朋友参考一下 选择正确的库 创建一个JS APP没有好的工具是很有难度的,jQuery只是操作DOM的库,没有提供任何创建APP的基础,这就是为什么我们要一个类似CanJS的专门的库。 CanJS 是一个轻量级的MVC库,提供你创建一个JS APP所需的工具。 CanJS 是一个轻