首页  

Spring Security 和 Shiro     所属分类 shiro 浏览量 74
安全管理框架 可以完成认证和授权的功能

认证(Authentication)
验证当前访问系统的是不是本系统的用户,并且要确认具体是哪个用户

授权(Authorization)
经过认证后判断当前用户是否有权限进行某个操作


Spring Security spring-security对spring整合较好,使用起来更加方便; 有更强大的spring社区进行支持; 支持第三方的 oauth 授权 Spring Security一般流程 1. 用户登录时,前端将用户输入的用户名、密码信息传输到后台,后台用一个类对象将其封装起来,通常是 UsernamePasswordAuthenticationToken 这个类 2. 用户密码验证 调用Service根据username从数据库中取用户信息到实体类的实例中,比较两者的密码, 如果密码正确就成功登陆,同时把包含着用户的用户名、密码、所具有的权限等信息的类对象放到SecurityContextHolder(安全上下文容器,类似Session) 3. 用户访问一个资源的时候,首先判断是否是受限资源。如果是的话判断当前是否登录,没有的话就跳到登录页面。 4. 如果用户已经登录,访问一个受限资源的时候,程序要根据url去数据库中取出该资源所对应的所有可以访问的角色,然后拿着当前用户的所有角色一一对比,判断用户是否可以访问
shiro 简单 灵活 可脱离spring使用 1. 易于理解的 Java Security API; 2. 简单的身份认证(登录),支持多种数据源(LDAP,JDBC,Kerberos,ActiveDirectory 等); 3. 对角色的简单的签权(访问控制),支持细粒度的签权; 4. 支持一级缓存,以提升应用程序的性能; 5. 内置的基于 POJO 企业会话管理,适用于 Web 以及非 Web 的环境; 6. 异构客户端会话访问; 7. 非常简单的加密 API; 8. 不跟任何的框架或者容器捆绑,可以独立运行。 四大核心功能:Authentication,Authorization,Cryptography,Session Management 1. Authentication:身份认证/登录,验证用户是不是拥有相应的身份; 2. Authorization: 授权,即权限验证,验证某个已认证的用户是否拥有某个权限;即判断用户是否能做事情, 常见的如:验证某个用户是否拥有某个角色。或者细粒度的验证某个用户对某个资源是否具有某个权限; 3. Session Manager: 会话管理,即用户登录后就是一次会话,在没有退出之前,它的所有信息都在会话中;会话可以是普通JavaSE环境的,也可以是如Web环境的; 4. Cryptography:加密,保护数据的安全性,如密码加密存储到数据库,而不是明文存储; Shiro三个核心组件:Subject, SecurityManager 和 Realms. 1. Subject:主体,任何可以与应用交互的用户; 2. SecurityManager: 相当于 SpringMVC 中的 DispatcherServlet 或者 Struts2 中的 FilterDispatcher; 所有具体的交互都通过 SecurityManager 进行控制; 它管理着所有 Subject、且负责进行认证和授权、及会话、缓存的管理。 3. Realm:域,Shiro从Realm获取安全数据(如用户、角色、权限), SecurityManager要验证用户身份,需要从Realm获取相应的用户进行比较以确定用户身份是否合法; 也需要从Realm得到用户相应的角色/权限进行验证用户是否能进行操作; 可以把Realm看成DataSource,即安全数据源 授权第三方登录需要手动实现
Spring Security的权限细粒度更高 https://gitee.com/dyyx/Shiro.git https://gitee.com/dyyx/spring-security

上一篇     下一篇
基于 CAS 的 OSS 流程说明

每日一曲合集

握笔姿势的重要性

hutool IdUtil

hutool 加密解密工具 SecureUtil

Java开源加密库 Bouncy Castle BC库