手动阀

Good Luck To You!

二 Shiro 认证

Shiro 是一个强大且灵活的 Java 安全框架,它提供了认证和授权功能,以下是关于 Shiro 认证的详细解释:

1、认证过程

初始化环境:首先需要构建安全管理器环境,通常是通过DefaultWebSecurityManager 来实现。

构建数据源:使用自定义的数据源,例如CustomRealmCh07,来模拟从数据库获取数据,这个数据源包含了用户的用户名和密码信息。

加密处理:构建HashedCredentialsMatcher,设置加密方式(如 MD5)和加密次数,这一步是为了对用户输入的密码进行加密处理。

获取主体与认证:获取主体(即当前用户),然后根据用户名和密码生成 token(令牌),接着进行登录(提交认证),系统会根据自定义数据源中的 doGetAuthenticationInfo() 方法来进行认证。

2、加盐加密认证

流程逻辑:与不加盐的流程类似,但增加了加盐的步骤以提高密码的安全性。

修改部分:在自定义数据源中添加方法以获得加盐后的密文密码。

编写测试类:编写测试类来验证加盐加密认证的正确性。

3、整合 JWT 实现认证和权限鉴定

编写 JWT 工具类:用于生成和验证 token。

编写 JWTToken:取代原生 token,实现AuthenticationToken 接口并重写getPrincipal()getCredentials() 两个方法。

编写 JWTFilter:过滤请求,封装subject.login() 方法。

编写 JWTRealm:用于进行权限信息的验证,让 Shiro 支持 JWTToken。

编写 Shiro 配置类:添加过滤器和过滤规则,为默认的安全管理器绑定编写的 realm 并关闭 session。

编写异常处理类:捕获抛出的异常,并根据不同的异常返回给前端相应的信息。

编写 Controller:处理未认证请求的控制器。

4、Shiro 认证原理分析

初始化环境:通过Environment 对象加载配置文件和初始化SecurityManager

获取 SecurityManager:安全管理器是 Shiro 的核心,负责认证、授权等功能。

获取当前主体:主体可以是用户或程序,可以访问SecurityManager 以获得认证、授权等服务。

封装账号密码:将账号和密码封装到UsernamePasswordToken 中。

执行认证:通过Subjectlogin 方法进行认证,认证过程中涉及到SecurityManagerSubjectAuthenticatorRealm 等组件。

Shiro 认证是一个涉及多个组件和步骤的过程,可以根据具体需求选择是否加盐加密或整合 JWT 来实现更复杂的认证和权限控制功能。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

Powered By Z-BlogPHP 1.7.3

Copyright Your WebSite.Some Rights Reserved.