Spring Security系列之授权(Authorization)架构

news/2025/2/5 0:40:58/

文章目录

    • AuthorizationManager
    • AuthorizationFilter
    • Request Matcher

AuthorizationManager

  • AuthorizationManager 被授 AuthorizationFilter 调用,负责做出最终的访问控制决定。AuthorizationManager 接口包含两个方法。
default void verify(Supplier<Authentication> authentication, T object) {AuthorizationDecision decision = check(authentication, object);if (decision != null && !decision.isGranted()) {throw new AccessDeniedException("Access Denied");}}@Nullable
AuthorizationDecision check(Supplier<Authentication> authentication, T object);
  • AuthorizationManager 的检查方法被传递给它所需要的所有相关信息,以便做出授权决定。特别是,传递安全对象(secure Object)使那些包含在实际安全对象调用中的参数能够被检查到。例如,让我们假设安全对象是一个 MethodInvocation。查询 MethodInvocation 的任何客户参数是很容易的,然后在 AuthorizationManager 中实现某种安全逻辑以确保委托人(principal)被允许对该客户进行操作。如果访问被授予,实现应返回 “negative” 的 AuthorizationDecision,如果访问被拒绝,应返回 “negative” 的 AuthorizationDecision,如果不作出决定,则返回空的 AuthorizationDecision。
  • verify 调用 check,然后在出现 “negative” 的 AuthorizationDecision 决定时抛出一个 AccessDeniedException。

在这里插入图片描述

AuthorizationFilter

  • AuthorizationFilter 为 HttpServletRequest 提供 authorization。它作为 Security Filters 之一被插入到 FilterChainProxy 中。
  • 当你声明一个 SecurityFilterChain 时,你可以覆盖默认的内容。不要使用 authorizeRequests,而要使用 authorizeHttpRequests。
  • 当使用 authorizeHttpRequests 而不是 authorizeRequests 时,就会使用 AuthorizationFilter 而不是 FilterSecurityInterceptor。

在这里插入图片描述

  1. 首先,AuthorizationFilter 从 SecurityContextHolder 获得一个 Authentication。它将其包装在一个 Supplier 中,以便延迟查找。
  2. 其次,它将 Supplier 和 HttpServletRequest 传递给 AuthorizationManager。
  3. 如果授权被拒绝,就会抛出一个 AccessDeniedException。在这种情况下, ExceptionTranslationFilter 会处理 AccessDeniedException。
  4. 如果访问被允许,AuthorizationFilter 继续进行 FilterChain,允许应用程序正常处理。

Request Matcher

  • RequestMatcher 接口被用来确定一个请求是否符合一个给定的规则。我们使用 securityMatchers 来确定一个给定的 HttpSecurity 是否应该应用于一个给定的请求。同样,我们可以使用 requestMatchers 来确定我们应该应用于一个给定请求的授权规则。
  • securityMatcher 和 requestMatcher 方法将决定哪个 RequestMatcher 实现最适合你的应用程序。如果Spring MVC在classpath中,那么将使用 MvcRequestMatcher,否则,将使用 AntPathRequestMatcher。
  • 如果你想使用一个特定的 RequestMatcher,只需向 securityMatcher 和/或 requestMatcher 方法传递一个实现。

你知道的越多,你不知的越多。


http://www.ppmy.cn/news/432717.html

相关文章

OceanBase—01(入门篇——使用docker安装OceanBase以及介绍连接OB的几种方式)

OceanBase—01&#xff08;入门篇——使用docker安装OceanBase以及介绍连接OB的几种方式&#xff09; 1. 前言1.1 安装部署参考1.1.1 安装前提1.1.2 参考 1.1 修改数据库用户名密码1.2 总结常见连接命令 2. 安装部署OceanBase2.1 启动 OceanBase 数据库实例2.1.1 默认拉取最新版…

哪些步骤出了错?才让冰箱变身成为“细菌箱”

生活中有很多人都习惯将冰箱当成家中剩余食材的保鲜箱&#xff0c;觉得吃不完的东西往冰箱里塞&#xff0c;就可以确保食物低温不变质。但是却经常出现罐头过期两三年&#xff0c;食材在冷冻库一摆就是好几个月的状况&#xff0c;甚至连蔬菜水果都出现变质或腐败的情况&#xf…

matlab建立三层蒸发模型,大型冷库中蒸发器的模型建立及优化

制冷系统蒸发器模型的建立,将直接影响到对蒸发器温度的控制,进而影响整个冷库的节能控制效果。蒸发器的结构和里面的制冷剂的流动以及各种不同的状况十分复杂,即使对众多环节进行理想化假设,利用机理建模的方法也很难建立精确的数学模型。根据工程应用中蒸发器模型参数变化较小…

冰箱制冷方式

家用冰箱的制冷方式有三种&#xff0c;即直冷制冷式、风冷制冷式和直冷风冷制冷式。[more] 1.直冷制冷式&#xff1a;由蒸发器表面低温的自然对流&#xff0c;降低箱内温度&#xff0c;但温度不均匀。较为省电&#xff0c;相同体积下&#xff0c;有效容积大。 2.风冷制冷式&…

冰箱如何自动除霜

目前比较先进的电冰箱设有定时自动化霜系统。每个无霜冰箱都有机械或电子的化霜系统&#xff0c;当压缩机工作一段时间后&#xff08;8-12小时左右&#xff09;翅片蒸发器表面也会结霜&#xff0c;如不进行化霜&#xff0c;霜会越结越厚&#xff0c;到时会将翅片蒸发器结满而将…

2021-2027中国无霜翅片蒸发器市场现状及未来发展趋势

2021-2027中国无霜翅片蒸发器市场现状及未来发展趋势 本报告研究中国市场无霜翅片蒸发器的生产、消费及进出口情况&#xff0c;重点关注在中国市场扮演重要角色的全球及本土无霜翅片蒸发器生产商&#xff0c;呈现这些厂商在中国市场的无霜翅片蒸发器销量、收入、价格、毛利率、…

云米冰箱能控制扫地机器人_用冰箱就能掌控全屋家电?云米21Face 428L确实可以...

现代年轻人都很懂时尚科技&#xff0c;他们都很懂利用智能手机来智能扩展更多的玩法。然而对于“宅”在家中时&#xff0c;掌控全屋家电已经无需拿起手机那么麻烦&#xff0c;只需面对着云米21Face互联网冰箱 428L&#xff0c;通过其身上的大屏幕&#xff0c;再加上智能AI语音系…

我想要这样的生活:天上无霾,地下无霜

硅谷Live / 实地探访 / 热点探秘 / 深度探讨 小探去年图省钱买了个二手的冰箱。结果不到半年&#xff0c;冰室里就变成了这个样子。 为了除霜&#xff0c;小探拿电吹风吹。 拿大菜刀砍。 总之&#xff0c;能想到的都想到了。最后&#xff0c;霜没除尽&#xff0c;冰箱坏了&…