01.Shiro基础概念以及快速入门

概述

Apache Shiro 是一个功能强大且灵活的开源安全框架,可以干净地处理身份验证,授权,企业会话 Management 和加密。

Apache Shiro 的首要目标是易于使用和理解。安全有时可能非常复杂,甚至会很痛苦,但不一定如此。框架应尽可能掩盖复杂性,并公开干净直观的 API,以简化开发人员确保其应用程序安全的工作。

您可以使用 Apache Shiro 进行以下操作:

  • 验证用户身份以验证其身份

  • 对用户执行访问控制,例如:

  • 确定是否为用户分配了特定的安全角色

    • 确定是否允许用户做某事
  • 即使在没有 Web 或 EJB 容器的情况下,也可以在任何环境中使用 Session API。

  • 在身份验证,访问控制或会话的生存期内对事件做出反应。

  • 汇总 1 个或更多用户安全数据的数据源,并将其全部显示为单个复合用户“视图”。

  • 启用单点登录(SSO)功能

  • 启用“记住我”服务以进行用户关联而无需登录

    以及更多-所有这些都集成到一个易于使用的内聚 API 中。

Shiro 尝试在所有应用程序环境中实现这些目标-从最简单的命令行应用程序到最大的企业应用程序,而不必强加对其他第三方框架,容器或应用程序服务器的依赖。当然,该项目旨在尽可能地集成到这些环境中,但是可以在任何环境中直接使用它。

架构

shiro框架

开发时常用流程

常用核心组件

  • SecuritManager:管理整个shiro框架
    • 在springboot中使用:org.apache.shiro.web.mgt.DefaultWebSecurityManager
    • DefaultWebSecurityManager中可以设置Session、Cookie等
  • Subject:主体(可以理解为用户信息,即与服务器交互的主题)
    • 当执行Subject.login时会最终执行Realm.doGetAuthenticationInfo
  • Realm:认证时执行对应的代码逻辑
    • 内置了一些Realm(可以自行查看AuthorizingRealm的实现类),但实际使用时最好自定义。
    • 认证时会调用:doGetAuthenticationInfo
    • 授权时会调用:doGetAuthorizationInfo
  • CredentialsMatcher:身份匹配器
    • 默认的身份匹配器:org.apache.shiro.authc.credential.SimpleCredentialsMatcher
    • 默认的Realm在调用doGetAuthenticationInfo时会调用CredentialsMatcher.doCredentialsMatch
  • Filter:过滤器
    • 默认的过滤器:在org.apache.shiro.web.filter.mgt.DefaultFilter里面定义的;
      名字类型描述
      anon(AnonymousFilter.class)认证不需要认证,便可以访问资源
      authc(FormAuthenticationFilter.class)认证需要对应的form表单认证才能访问对应的资源,适用于前后端不分离的情况(安全性不高)
      authcBasic(BasicHttpAuthenticationFilter.class)认证需要登录才能访问对应的资源,认证方式为http中Basic的认证方式(安全性一般)
      authcBearer(BearerHttpAuthenticationFilter.class)认证需要登录才能访问对应的资源,认证方式为OAuth2的认证方式(安全性好)
      logout(LogoutFilter.class)认证用于处理用户登出操作。当用户访问登出URL时,将执行登出操作并重定向到指定的页面,适用于前后端不分离的情况
      noSessionCreation(NoSessionCreationFilter.class)认证添加这个过滤器后,就会处于无状态的模式,即禁止创建会话
      perms(PermissionsAuthorizationFilter.class)授权需要特定的权限才能访问
      port(PortFilter.class)授权需要指定的端口才能访问
      rest(HttpMethodPermissionFilter.class)授权用于处理RESTful风格的请求
      roles(RolesAuthorizationFilter.class)授权用于检查用户是否具有特定的角色
      ssl(SslFilter.class)其他需要https的请求
      user(UserFilter.class)授权需要已登录或者“记住我”的用户才能访问
      invalidRequest(InvalidRequestFilter.class)授权过滤无效的请求,并返回400, “Invalid request”;
    • 默认的过滤器链:org.apache.shiro.spring.web.config.DefaultShiroFilterChainDefinition
    • 在springboot中:使用ShiroFilterChainDefinition配置过滤链并将其与SecuritManager关联:org.apache.shiro.spring.web.ShiroFilterFactoryBean

认证授权流程

认证授权流程

快速入门

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值