Shiro 是一个强大的、简单易用的 Java 安全框架,其主要目标是提供易于使用的安全性解决方案

Shiro 是一个强大的、简单易用的 Java 安全框架,其主要目标是提供易于使用的安全性解决方案。Shiro 可以管理用户身份验证、访问控制、会话管理等安全功能,并且是基于安全框架的应用开发中的一个完整解决方案。
Shiro 提供多种身份验证方法,包括基于表单、基于 HTTP Basic/ Digest 认证、基于 LDAP、基于 Kerberos、CAS 和 OpenID 等多种认证方式。Shiro 还支持 RBAC(基于角色的访问控制)、ABAC(基于属性的访问控制)等多种授权方式。Shiro 的会话框架支持 Web 和非 Web 应用程序,那会话存储可以使用各种方式(如内存、文件、JDBC 或缓存)进行持久化,而且还支持 CSRF(跨站请求伪造)保护和 XSS(跨站脚本)保护等多种安全功能。
Shiro 是一个非常灵活和可定制的安全框架,并可以与任何基于 Java 的应用程序集成,例如 Spring 等。Shiro 具有轻量级、易于使用、易于扩展、提供面向切面编程(AOP)支持等优点。Shiro 还提供了一系列易于使用的方法和工具,使得开发人员可以快速编写安全的 Java 应用程序。
总之,Shiro 是一种强大的、简单易用的 Java 安全框架,提供了多种身份验证、访问控制、会话管理等安全功能。Shiro 具有灵活、易用、易扩展的优点,并且可以与任何基于 Java 的应用程序集成,是开发安全的 Java 应用程序的一个优秀的解决方案。
Shiro是一个强大的简单易用的Java安全框架,主要用来更便捷的认证,授权,加密,会话管理。Shiro首要的和最重要的目标就是容易使用并且容易理解。
Shiro是一个有许多特性的全面的安全框架,下面这幅图可以了解Shiro的特性:
可以看出shiro除了基本的认证,授权,会话管理,加密之外,还有许多额外的特性。
Shiro架构
从大的角度来看,Shiro有三个主要的概念:Subject,SecurityManager,Realms,下面这幅图可以看到这些原件之间的交互。
Subject:翻译为主角,当前参与应用安全部分的主角。可以是用户,可以试第三方服务,可以是cron 任务,或者任何东西。主要指一个正在与当前软件交互的东西。
安全是企业应用中不可缺少的功能,在众多权限框架中,Shiro(其前身是JSecurity)因其简单而又不失强大的特点引起了不少开发者的注 意。随着Grails的关注度越来越高,在Grails社区也出现了Shiro的插件。
Shiro最早的名字是JSecurity,后来更名为Shiro并成为Apache的孵化项目。这次改名也同样影响了Grails Shiro Plugin。它最早在Shiro还未改名之前就已经存在了,后来因为Shiro的名字变更,也就一道跟着“改名换姓”。由于Grails Shiro Plugin中已经包含了Shiro相关的Jar,因此对于插件的使用者而言,不必专门下载Shiro。
所有Subject都需要SecurityManager,当你与Subject进行交互,这些交互行为实际上被转换为与SecurityManager的交互
SecurityManager:安全管理员,Shiro架构的核心,它就像Shiro内部所有原件的保护伞。然而一旦配置了SecurityManager,SecurityManager就用到的比较少,开发者大部分时间都花在Subject上面。
请记得,当你与Subject进行交互的时候,实际上是SecurityManager在背后帮你举起Subject来做一些安全操作。
Realms:Realms作为Shiro和你的应用的连接桥,当需要与安全数据交互的时候,像用户账户,或者访问控制,Shiro就从一个或多个Realms中查找。
Shiro提供了一些可以直接使用的Realms,如果默认的Realms不能满足你的需求,你也可以定制自己的Realms
Authentication:身份认证/登录,验证用户是不是拥有相应的身份;
Authorization:授权,即权限验证,验证某个已认证的用户是否拥有某个权限;即判断用户是否能做事情,常见的如:验证某个用户是否拥有某个角色。或者细粒度的验证某个用户对某个资源是否具有某个权限;
Session Manager:会话管理,即用户登录后就是一次会话,在没有退出之前,它的所有信息都在会话中;会话可以是普通JavaSE环境的,也可以是如Web环境的;
Cryptography:加密,保护数据的安全性,如密码加密存储到数据库,而不是明文存储;
Web Support:Web支持,可以非常容易的集成到Web环境;
Caching:缓存,比如用户登录后,其用户信息、拥有的角色/权限不必每次去查,这样可以提高效率;
Concurrency:shiro支持多线程应用的并发验证,即如在一个线程中开启另一个线程,能把权限自动传播过去;
Testing:提供测试支持;
Run As:允许一个用户假装为另一个用户(如果他们允许)的身份进行访问;
Remember Me:记住我,这个是非常常见的功能,即一次登录后,下次再来的话不用登录了。
记住一点,Shiro不会去维护用户、维护权限;这些需要我们自己去设计/提供;然后通过相应的接口注入给Shiro即可。
接下来我们分别从外部和内部来看看Shiro的架构,对于一个好的框架,从外部来看应该具有非常简单易于使用的API,且API契约明确;从内部来看的话,其应该有一个可扩展的架构,即非常容易插入用户自定义实现,因为任何框架都不能满足所有需求。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Bol5261

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值