# Attribute Based Access Control(ABAC) **Repository Path**: zhang-chunyong/br_security ## Basic Information - **Project Name**: Attribute Based Access Control(ABAC) - **Description**: br_security - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: https://gitee.com/zhang-chunyong/br_security - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 2 - **Created**: 2023-03-23 - **Last Updated**: 2024-03-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Attribute Based Access Control(ABAC) #### 介绍 实现基于属性授权的授权功能,从整体来看认证授权系统采用基于元模型解析的访问控制方案,并选择ABAC-基于属性的访问控制 (Attribute Based Access Control)来判断一个用户是否能访问某项资源。 首先建立一个模型,这个访问控制模型是基于PERM元模型(策略、效果、请求、匹配器)抽象为CONF文件。模型定义如下:{request_definition、policy_definition、policy_effect、matchers}。系统端对于模型的每一个属性进行单独管理。其中request_definition是定义好的请求格式:{userRole, department, provideOrg, rid}。这四个分别是用户的角色,用户的部门,提供服务的机构和服务的ID。policy_definition即定义的访问策略模式,与请求相对应,格式相同。matchers是匹配请求和策略的规则。模型默认规则是m = zhCn(r.userRole, p.userRole) && zhCn(r.department, p.department) && r.provideOrg == p.provideOrg && r.rid == p.rid。同时系统端可以自定义匹配规则,matchers是通过请求过来的参数与策略通过规则进行匹配,获得一个效果,拿到效果policy_effect的表达式,返回一个布尔值,从而得知是否授权允许访问,实现了授权验证模块。效果policy_effect可以被理解为一种模型,在这种模型中,对匹配结果再次作出逻辑组合判断。因此,在这样的模型下切换或升级项目的授权机制会很简便。 认证授权系统选取基于属性的访问控制ABAC来匹配整个项目复杂的业务场景。对于失效的权限role或者突发事件时需要维护授权策略,使用 Specification Patter解析JSON或者XML来动态的创建规则和实现相对灵活的策略从而实现授权策略维护模块。