1. AAA 以及相关概念
1.1 Authentication (AE) - 认证
确认与系统交互的用户或者进程身份的过程
1.2 Authorisation (AO) - 授权
当 Principal (身份主体) 访问系统资源时依据主体授权允许或者拒绝其访问的过程
1.3 Accounting (AC) - 记账
记录 Principal 对系统资源的访问操作
1.4 Principal - 身份主体
系统中对交互对象的唯一识别. 交互对象可以是一个用户, 也可以是一个外部进程.
1.5 Permission - 资源权限
对确定资源的访问资格
1.5.1 Dynamic Permission - 动态资源权限
osgl-aaa提出的概念, 如果某种资源权限被设置为动态, 表示在授权过程中非但需要对用户是否拥有该资源权限进行检查, 还必须检查用户和资源之间是否关联. 比如, 用户 A 不能修改用户 B 拥有的数据, 即使 A 拥有相应的资源权限
1.6 Role - 角色
Role 是一组定义好的 Permission 的集合. Role 可以用来方便地就相关联的权限组合对 Principal 进行授权或者取消授权
1.7 Privilege - 特权
和 Permission 不同, Privilege 并不针对特定的资源. Privilege 依赖于级别 (一个Integer) 来判断是否有权限访问某些资源. 举个具体的例子, 假设某个资源要求访问级别是5, 当前 Principal 的访问级别是 6, 则应该授权访问. 比较一下 Permission 的授权过程, 假设访问某个资源要去的 Permission 是 "create-order", 而当前 Principal 没有这个 Permission, 则拒绝访问.
另一个不同之处是, 一个 Principal 可以有多个 Permission (直接或者间接通过 Role 获得), 但一个 Principal 最多有一个 Privilege
1.8 概念之间的关系
Principal 可以有
- 零到多个 Roles
- 零到多个 Permissions
- 零个或者一个 Privilege
Role 可以有
- 零到多个 Permissions
2. osgl-aaa 和 act-aaa-plugin
osgl-aaa 是一个通用的Java AAA框架和工具集. 实现了上面所述的概念和逻辑
act-aaa-plugin插件将 osgl-aaa 框架和ActFramework集成起来, 负责配置管理, 服务发现, 并实现了在 osgl-aaa 中定义的一些接口, 以及一些工具类.
在以后的 AAA 系列博客中我们将一起从头到尾实现一个完整的带用户注册, 登录, 授权功能演示的小型系统.
参考
- ActFramework 官网
- ActFramework视频
- AAA - ActFramework的安全框架II - 应用
- simple-bbs - AAA 演示项目1
- Yet Another Todo List - AAA 演示项目2