安全框架简单来说就是对访问权限进行控制,主要是用户认证和权限鉴权。在安全框架有MP-SPDZ、ABY、ABY3、CBMC-GC、EMP-toolkit等,其中最流行的是Shiro和Spring Security框架。
Apache Shiro和Spring Security的对比:
Shiro:是一个很早的框架,是比较轻量级的安全框架,提供许多功能,上手简单。
SpringSecurity:这个安全框架搭建起来比较重,但是最为流行,现如今基本都是使用SpringSecurity作为安全框架,它提供了非常多的过滤器,也方便扩展。Sa-Token:这个安全框架是比较近期的开源框架,是一个容易上手的轻量级框架,只需要使用注解就可以,内置提供了非常多的方法和注解,也是方便扩展。
但是SpringSecurity框架搭建比较复杂,虽然功能多但是在实际开发中反而用不到那么功能,所以大多都使用较为简单的Shiro安全框架
Shiro可以非常容易的开发出足够好的应用,其不仅可以用在JavaSE环境,也可以用在JavaEE环境。Shiro可以帮助我们完成:认证、授权、加密、会话管理、与Web集成、缓存等
主要功能有:
Subject:认证主体,包含各种元素,即一个抽象概念,与Subject的所有交互都会委托给SecurityManager
SecurityManager:安全管理器,相当于Shiro的大管家,是Shiro的核心
Realm:领域/资源,SecurityManager需要通过Realm来获取资源对subject交互的代码来进行验证权限
Cryptography:加密,保护数据的安全性,如密码加密储存到数据库,而不是明文储存
Realm:领域/资源,Shiro 从 Realm 获取安全数据(如用户、角色、权限),就是说 SecurityManager 要验证用户身份,那么它需要从 Realm 获取相应的用户进行比较以确定用户身份是否合法;也需要从 Realm 得到用户相应的角色 / 权限进行验证用户是否能进行操作;可以把 Realm 看成 DataSource,即安全数据源。