在 Web 应用开发中,安全一直是非常重要的一个方面。安全虽然属于应用的非功能性需求,但是应该在应用开发的初期就考虑进来。比如我们开放的功能页面需要登录授权之后才能访问,一些功能需要具备特定权限的人才能操作;再比如我们开放了数据API接口,如果不做访问控制,那么任何人都可以调用,当被不法分子操作时将给我们带来巨大的麻烦。那么在Java 整个体系中访问控制是否有一套理论技术支撑呢,我们是否可以做一个通用性的访问控制系统来完成分布式系统架构下的复杂的权限控制?接下来会一一介绍。
访问控制的本质:
系统权限控制 本质上是访问控制(Access Control),那访问控制的本质又是什么呢?其实就是合法的访问受保护的资源,通俗的解释就是“【谁】是否有可以对某个【资源】进行某种【操作】”;可以看出访问控制的三个基本要素:主体(请求实体)、客体(资源实体)、控制策略(属性集合);
访问控制需要完成的两个任务:
识别和确认访问系统的用户;
决定该用户可以对某一系统资源进行何种类型的访问;
访问控制理论模型:
- DAC&MAC模型
- DAC:自主访问控制;
- MAC:强制访问控制,一般用于多级安全军事系统;
- IBAC模型:
- 基于身份的访问控制模型
- 举例:登录验证
- 比如Java中使用cookie、sess