第10章 访问控制
10.1 what can i do?
权限控制是值某个主体(身份)对某一个客体需要实施某种操作,而系统对这种操作的限制就是权限控制。
在一个安全系统中,确定主题的身份是“认证”解决的问题;而客体是胭脂红资源,是主题发起的请求对象。在主体对客体进行操作的过程,系统控制主体不能“无限制”地对客体进行操作,这过程就是“访问控制”。
在WEB应用中,根据访问楷体的不同,常见的访问控制可以分为“基于URL的访问控制”、“基于方法的访问控制”和“基于数据的访问控制”。
在WEB系统中对于用户的权限控制需要在过滤器中进行检测。
10.2 垂直权限管理
垂直权限管理本质就是基于角色的访问控制(RBAC)。
Spring Security提供了两种权限管理方式,一种是“基于URL的访问控制”,另一种“基于方法的访问控制”。换句话说就是,在SpringSecurity都是验证该用户所属的角色,以决定是否授权。
10.3 水平权限管理
水平权限是指在同一角色的不同用户的权限控制问题。相对于垂直权限管理而言,水平权限问题出现在同一个角色上,一般的系统只是验证了角色,没有在角色内的用户做细分,也没有对数据的子集做细分,因此缺乏一个用户到数据之间的对应关系。
由于水平权限管理是系统缺乏一个数据级的访问控制所造成的,因此水平权限管理又可以称为“基于数据的访问控制”。
水平权限管理难度较大的原因:
对于数据的访问控制,与业务结合得十分紧密,不易细分;
数据的访问控制可能会涉及到各个方面,如跨表、跨库查询,影响性能。
10.4 oauth简介
OAUTH协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式不同之处是OAUTH的授权不会使第三方触及到用户的帐号信息(如用户名与密码),即第三方无需使用用户的用户名与密码就可以申请获得该用户资源的授权,因此OAUTH是安全的。
特点: (1). 简单:不管是OAUTH服务提供者还是应用开发者,都很易于理解与使用;
(2). 安全:没有涉及到用户密钥等信息,更安全更灵活;
(3). 开放:任何服务提供商都可以实现OAUTH,任何软件开发商都可以使用OAUTH;
参看:
spring-security-oauth2.0认证
http://oauth.net/code/