位置: IT常识 - 正文

Spring Security(七)-- AuthenticationProvider

编辑:rootadmin
Spring Security(七)-- AuthenticationProvider 一、前言

推荐整理分享Spring Security(七)-- AuthenticationProvider,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

在之前的学习中了解了userDeatailsService和passwordEncoder,在本章我们将介绍身份验证流程的其余部分,首先我们要讨论如何实现AuthenticationProvider接口,在身份验证成功之后,将探讨SpringContext接口以及Spring Security管理它的方式。

Spring Security(七)-- AuthenticationProvider

在企业级应用程序中,你可能会发现自己处于这样一种状况:基于用户名和密码的身份验证的默认实现并不适用。另外,当涉及身份验证时,应用程序可能需要实现多个场景。例如,我们可能希望用户能够通过使用在SMS消息中接收到的或由特定应用程序显示的验证码来证明自己的身份。或者,也可能需要实现某些身份验证场景,其中用户必须提供存储在文件中的某种密钥。我们甚至可能需要某些使用用户指纹的表示来实现身份验证逻辑。框架的目的是要足够灵活,以便允许我们实现这些所需场景中的任何一个。   框架通常会提供一组最常用的实现,但它必然不能涵盖所有可能的选项。就SpringSecurity而言,可以使用AuthenticationProvider接口来定义任何自定义的身份验证逻辑。

二、在身份验证期间表示请求

身份验证(Authentication)也是处理过程中涉及的其中一个必要接口的名称。Authentication接口表示身份验证请求事件,并且会保存请求访问应用程序的实体的详细信息。可以在身份验证过程期间和之后使用与身份验证请求事件相关的信息。请求访问应用程序的用户被称为主体(principal),如果你有兴趣可以打印下认证后的authentication对象,你会发现Principal里封装的就是我们的UserDetails,这意味着我们可以对此进行强转化,方便后面的职责分离。如果你曾经使用过java Security API ,就会知道,在Java Security API中,名为Principai的接口表示相同的概念。Spring Security的Authentication接口扩展了这个契约。    Spring Security中的Authentication契约不仅代表了一个主体,还添加了关于身份验证过程是否完成的信息以及权限集合。实际上,这个契约是为了扩展Java Security API的Principal契约而设计的,这在与其他框架和应用程序实现的兼容性方面是一个加分项。Authentication接口代码如下:

public interface Authentication extends Principal, Serializable {Collection<? extends GrantedAuthority> getAuthorities();Object getCredentials();Object getDetails();Object getPrincipal();boolean isAuthenticated();void setAuthenticated(boolean isAuthenticated) throws IllegalArgumentException;}

目前需要了解的几个方法如下:

isAuthenticated():如果身份验证技术,则返回true;如果身份验证过程仍在进行,则返回false.getCredentials():返回身份验证过程中使用的密码或任何密钥。getAuthorities():返回身份验证请求的授权集合。三、实现自定义身份验证逻辑

Spring Security中的AuthenticationProvider负责身份验证逻辑。AuthenticationProvider接口的默认实现会将查找系统用户的职责委托给UserDetailsService。它还使用PasswordEncoder在身份验证过程中进行密码管理。其中AuthenticationProvider接口diamagnetic如下:

public interface AuthenticationProvider {Authentication authenticate(Authentication authentication)throws AuthenticationException;boolean supports(Class<?> authentication);}

AuthenticationProvider的职责是与Authentication接口紧密耦合一起的。authenticate()方法会接收一个Authentication对象作为参数并返回一个Authentication对象,需要实现authenticate()方法来定义身份验证逻辑。可以通过以下3个要点总结如何实现authenticate()方法:

如果身份验证失败,则该方法应该抛出AuthenticationException异常。如果该方法接收到的身份验证对象不被AuthenticationProvider实现所支持,那么该方法应该返回null。该方法应该返回一个Authentication实例,该实例表示一个完全通过了身份验证的对象。对于这个实例,isAuthenticated()方法会返回true,并且它包含关于已验证实体的所有必要细节。通常,应用程序还会从实例中移除密码等敏感数据。因为保留这些数据可能会将它暴露给不希望看到的人。

该接口的另一个方法是supports(Class<?> authentication)。如果当前的AuthenticationProvider支持作为Authentication对象而提供的类型,则可以实现此方法以返回true。注意,即使该方法对一个对象返回true,authenticate()方法仍然有可能通过返回null来拒绝请求。Spring Security这样的设计是较为灵活的,使得我们可以实现一个AuthenticationProvider,它可以根据请求的详细信息来拒绝身份验证请求,而不仅仅是根据请求的类型来判断。

四、应用自定义身份验证逻辑
本文链接地址:https://www.jiuchutong.com/zhishi/295877.html 转载请保留说明!

上一篇:调频连续波(FMCW)原理(调频连续波雷达)

下一篇:html实现用户注册页面(生日实现年月日的三级联动)(html用户注册界面)

  • mate30可以改指纹特效吗(华为mate30增加指纹)

    mate30可以改指纹特效吗(华为mate30增加指纹)

  • 华为p20录音在哪里(华为p20的录音功能在哪)

    华为p20录音在哪里(华为p20的录音功能在哪)

  • 如果微信聊天记录删除了能找回来吗(如果微信聊天记录已经被迁移,怎么看出来)

    如果微信聊天记录删除了能找回来吗(如果微信聊天记录已经被迁移,怎么看出来)

  • 华为荣耀30和30s区别(华为荣耀40plus)

    华为荣耀30和30s区别(华为荣耀40plus)

  • 手机磁吸支架对手机有影响吗(磁吸手机支架会影响手机信号吗)

    手机磁吸支架对手机有影响吗(磁吸手机支架会影响手机信号吗)

  • 分辨率1920x1080是几k(分辨率1920x1080是多少dpi)

    分辨率1920x1080是几k(分辨率1920x1080是多少dpi)

  • 电脑局部截屏的快捷键是什么(电脑局部截屏的三种方法图片)

    电脑局部截屏的快捷键是什么(电脑局部截屏的三种方法图片)

  • 苹果x原彩显示没有了(苹果x原彩显示在哪里设置)

    苹果x原彩显示没有了(苹果x原彩显示在哪里设置)

  • 荣耀v30和荣耀30s的区别(荣耀V30和荣耀30青春版手机壳通用吗)

    荣耀v30和荣耀30s的区别(荣耀V30和荣耀30青春版手机壳通用吗)

  • poe交换机烧坏路由器吗(poe交换机会烧哪些设备)

    poe交换机烧坏路由器吗(poe交换机会烧哪些设备)

  • 手机永恒模式是什么(手机的永恒模式)

    手机永恒模式是什么(手机的永恒模式)

  • camal00 华为什么机型(cam-al00是华为什么型号)

    camal00 华为什么机型(cam-al00是华为什么型号)

  • 转转永久封禁影响大吗(转转永久封禁影响微信吗)

    转转永久封禁影响大吗(转转永久封禁影响微信吗)

  • 苹果手机储存的文件在哪(苹果手机储存的档案在哪里找?)

    苹果手机储存的文件在哪(苹果手机储存的档案在哪里找?)

  • 移动5g要换卡吗(移动5g需要更换手机卡吗)

    移动5g要换卡吗(移动5g需要更换手机卡吗)

  • 手机怎么查看淘宝年龄(手机怎么查看淘宝店铺开了多久)

    手机怎么查看淘宝年龄(手机怎么查看淘宝店铺开了多久)

  • 信号hd是什么意思(信号hd是什么意思,怎么关闭)

    信号hd是什么意思(信号hd是什么意思,怎么关闭)

  • 苹果5录屏功能在哪(苹果录屏功能在哪)

    苹果5录屏功能在哪(苹果录屏功能在哪)

  • nio bio aio的区别(简述 bio, nio, aio 的区别)

    nio bio aio的区别(简述 bio, nio, aio 的区别)

  • 存储空间不足怎么删除(存储空间不足怎么关闭提示)

    存储空间不足怎么删除(存储空间不足怎么关闭提示)

  • 手机电话未接通对方能收到吗(手机电话未接通的英文)

    手机电话未接通对方能收到吗(手机电话未接通的英文)

  • win10重置未做任何更改(win10重置未做任何更改 解决办法)

    win10重置未做任何更改(win10重置未做任何更改 解决办法)

  • 网络限制怎么解决(网络受限怎么解除)

    网络限制怎么解决(网络受限怎么解除)

  • 命令行 cnpm install 报错: Install fail Error: Unsupported URL Type: npm:vue-loader@^15.9.7(命令行查看ip地址)

    命令行 cnpm install 报错: Install fail Error: Unsupported URL Type: npm:vue-loader@^15.9.7(命令行查看ip地址)

  • 【云原生 | 23】Docker运行Web服务实战之Tomcat(云原生是什么)

    【云原生 | 23】Docker运行Web服务实战之Tomcat(云原生是什么)

  • 计算土地增值税时允许扣除的项目有
  • 残疾人保证金计算器
  • 商会费用会计分录
  • 其他权益工具投资公允价值变动
  • 个人接受现金捐赠的例子
  • 开票系统技术服务费在申报表哪里抵扣
  • 小规模残疾人交多少税收
  • 工会经费入账
  • 退销售货款的现金流是哪一个
  • 机票里面的其他税费抵扣吗
  • 房产经纪公司成本费用
  • 应付账款保理是什么意思
  • 应收账款融资的优缺点
  • 待摊费用是
  • 外出经营预缴税款,回所在地如何申报
  • 财产租赁合同印花税申报期限
  • 每月交的社保什么时候到账
  • 金税四期有什么变化
  • 企业所得税季度申报时间
  • 车船税计入什么费用
  • 销售应税消费品应交的消费税分录
  • 消防改造费用
  • 其他应收款无法收回的会计分录
  • 企业新建厂房
  • 工资结算天数
  • 减免教育费附加和地方教育费附加账务处理
  • 企业合并无形资产摊销
  • 香港公司的法人叫什么
  • 简易计税分包款进项税可以抵扣吗
  • 补发票需要什么东西
  • 高新技术企业研发费占比
  • deepin 终端命令
  • 蓝牙耳机连电脑
  • PHP:curl_multi_remove_handle()的用法_cURL函数
  • 非货币性资产交换
  • 增值税发票开红字发票后账务处理?
  • 土地增值税扣除项目金额怎么算
  • 表单校验html5
  • vue中使用数组
  • php消息队列kafka
  • 月末结转本年利润吗
  • php怎么获取post数据
  • phpcms插件
  • 公司垫付的工伤医药费怎么报销
  • 企业所得税汇算清缴表
  • 小规模纳税人可以做进出口贸易吗
  • 怎么找回丢失的华为手机
  • 发票报销哪些要素不能少
  • 外购无形资产的增值税计入成本吗
  • 材料成本差异会计处理
  • 预付账款收到发票
  • 建筑安装工程承包合同条例还有效吗
  • 虚开发票但是没有成本如何做账?
  • 加盟费收入需要纳税吗
  • 固定资产清理时累计折旧提完了怎么账务处理
  • 成本费用利润率一般在什么范围
  • 工会经费的减除项是什么
  • 购买的垃圾袋计入什么科目
  • 企业注销预付账款怎么做
  • mysql优化步骤
  • mysql启动时报1067
  • 整理房间日记200
  • ubuntu系统怎么用
  • centos7修改网络
  • win108080端口怎么打开
  • w7系统怎么扫描
  • win7小键盘怎么调出
  • win8.1介绍
  • win7安装cad2022
  • win10系统安装搜狗输入法很慢
  • win8任务栏点击没反应
  • excel表格文本形式在哪里
  • 不得不佩服自己的搞笑说说
  • js中断点用法
  • linux中的shell命令
  • jquery 表单
  • python 判断中文字符
  • 湖南省税务局发票辨伪系统
  • 地方税务局网上申报
  • 税务绩效管理4+4+4+n
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设