位置: 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用户注册界面)

  • 微博营销中怎样提高微博转发率(微博营销中怎样引流推广)

    微博营销中怎样提高微博转发率(微博营销中怎样引流推广)

  • 华为nova4高配和nova5的区别是什么(华为nova4高配和低配怎么区分)

    华为nova4高配和nova5的区别是什么(华为nova4高配和低配怎么区分)

  • 怎么将word只读模式取消(怎么将word只读模式转为可修改模式)

    怎么将word只读模式取消(怎么将word只读模式转为可修改模式)

  • 网上买的手机怎么保修(网上买的手机怎么退货)

    网上买的手机怎么保修(网上买的手机怎么退货)

  • 抖音怎么发60秒以上的视频(抖音怎么发60秒视频)

    抖音怎么发60秒以上的视频(抖音怎么发60秒视频)

  • 8plus电池容量(苹果8p为什么被称为机皇)

    8plus电池容量(苹果8p为什么被称为机皇)

  • vivox30网速卡怎么回事(vivox30手机网速慢)

    vivox30网速卡怎么回事(vivox30手机网速慢)

  • 苹果的圆圈圈在哪里设置(iphone圆圈圈)

    苹果的圆圈圈在哪里设置(iphone圆圈圈)

  • 收藏店铺和关注店铺一样吗(收藏店铺和关注店铺有什么区别)

    收藏店铺和关注店铺一样吗(收藏店铺和关注店铺有什么区别)

  • 拼多多商家服务费扣点是多少(拼多多商家服务态度不好,如何处罚)

    拼多多商家服务费扣点是多少(拼多多商家服务态度不好,如何处罚)

  • 华为手机怎么下载小红书(华为手机怎么下载歌曲到u盘)

    华为手机怎么下载小红书(华为手机怎么下载歌曲到u盘)

  • 微信里的视频号是什么(微信里的视频号好友刚刚点赞过就会提醒吗)

    微信里的视频号是什么(微信里的视频号好友刚刚点赞过就会提醒吗)

  • 荣耀锁屏密码忘记怎么办(荣耀 忘记锁屏密码)

    荣耀锁屏密码忘记怎么办(荣耀 忘记锁屏密码)

  • 怎么开启免打扰(手机怎么开启免打扰)

    怎么开启免打扰(手机怎么开启免打扰)

  • iphone11中国发售时间(iphone 11 发售价)

    iphone11中国发售时间(iphone 11 发售价)

  • vivo备忘录怎么添加图片(vivo手机手写签名)

    vivo备忘录怎么添加图片(vivo手机手写签名)

  • 荣耀20青春版怎么添加拍照水印(荣耀20青春版怎么录屏)

    荣耀20青春版怎么添加拍照水印(荣耀20青春版怎么录屏)

  • 网络攻击的种类分为(网络安全的威胁有哪些)

    网络攻击的种类分为(网络安全的威胁有哪些)

  • 腾讯地图如何免流(腾讯地图如何免费标注自己店铺位置)

    腾讯地图如何免流(腾讯地图如何免费标注自己店铺位置)

  • 小米6x上市时间(小米6x什么时间出的)

    小米6x上市时间(小米6x什么时间出的)

  • iphone11pro电池容量(iphone11pro电池容量78)

    iphone11pro电池容量(iphone11pro电池容量78)

  • svip9上线时间(svip9活动)

    svip9上线时间(svip9活动)

  • win7改win10(戴尔台式机win7改win10)

    win7改win10(戴尔台式机win7改win10)

  • simappdialog是什么(simappdialog是什么软件)

    simappdialog是什么(simappdialog是什么软件)

  • 群聊的聊天记录怎么转发(群聊的聊天记录删了怎么恢复)

    群聊的聊天记录怎么转发(群聊的聊天记录删了怎么恢复)

  • 朋友圈加载更多是什么意思(朋友圈加载更多然后一条横线)

    朋友圈加载更多是什么意思(朋友圈加载更多然后一条横线)

  • 厂房出租开发票怎么交税
  • 企业自建房产缴契税吗
  • 纯外贸出口企业出售固定
  • 分摊房屋租赁费计入什么科目
  • 个体户每个月开10万会查吗
  • 筹建期间购买的机械配件
  • 销售退货时发票已认证怎么办
  • 销售货物并运输增值税
  • 发票购方税号是什么意思
  • 销项负数票需要把之前的票退回吗
  • 费用报销单如何粘贴票据
  • 高新企业申报指南
  • 上年工资计提多了才发现
  • 职工福利费扣除限额
  • 其他债权投资通俗
  • 什么是汇兑损益,汇兑损益产生的原因有哪些?(10分)
  • 劳保用品做账分录
  • 如何在windows11上安装动态壁纸
  • 两个公司的资金怎么合并
  • 月末结转未分配利润吗
  • 在建工程如何转为成本费用
  • 前端获取post请求返回数据
  • 损失赔偿金要开什么发票
  • win7系统无法启动怎么处理
  • 基建借款属于什么科目
  • 如何批量清理桌面
  • php两个$什么意思
  • torch训练模型
  • php include require
  • 银行承兑汇票贴现率是多少
  • Nat Biotechnol –精准 CRISPR-Cas噬菌体疗法将为重症感染患者带来福音
  • yolov8训练自己的数据集 Windows
  • 收到工程款怎么做凭证
  • 非货币性资产投资的会计处理
  • 盈余公积金的账务处理
  • 职工教育经费具体比例
  • 三代手续费的税率
  • 织梦怎么导入数据库
  • 报税中的利润表怎么填
  • 完全卸载mysql8.0
  • 通货膨胀率怎么求
  • 固定资产是怎么管理的
  • 会计中的明细科目是什么
  • 发票抬头开个人可以吗?
  • 什么叫总分类账簿
  • 投资损失如何入账
  • 税控盘上报
  • 增值税专用发票几个点
  • 没有计提坏账准备的情况下,应收账款的计税基础
  • 免税苗木发票如何申报
  • 房产税开征利好那些概念股 新闻
  • 管理不善存货盘亏计入什么科目
  • 交易或事项对会计等式的影响基本类型
  • 专票和普票的作用
  • 研发费用中可以有委托研发核算吗
  • 去年的会计凭证做错了,今年发现要怎么修改
  • mysql column is ambiguous
  • win10 rs5
  • 怎样破解bios密码
  • win10搜索类型
  • linux中安装vim命令
  • 组装机没有装系统开机会怎么样
  • ssh免密登录执行shell
  • win8.1应用商店
  • win8系统关机键找不见
  • win8点设置没反应
  • 作战仿真理论与技术
  • python的日志
  • 如何用vs默认打开unity脚本
  • jquery判断控件是否存在
  • javascript面向对象吗
  • jsonobject java
  • js工具类库
  • android开发从入门到精通(项目案例版)
  • 天津地税局网上营业厅
  • 垠坤集团是属于国企吗
  • 河北省电子税务局官网app
  • 进境邮件补充申请
  • 安全生产管理局和应急局
  • 税收优惠政策能调动公众的捐赠积极性
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设