这个 Spring Security 图是啥意思?
Posted
技术标签:
【中文标题】这个 Spring Security 图是啥意思?【英文标题】:What means this Spring Security diagram?这个 Spring Security 图是什么意思? 【发布时间】:2015-03-23 08:40:00 【问题描述】:我正在学习 Spring Core 认证,我有一些与此 Spring Security 图的含义相关的文档:
它解释了 Spring Security 项目的架构及其组件之间的交互,但究竟是什么意思?
它显示了一个 Authentication Manager 组件,阅读文档后我发现它处理来自框架其他部分的身份验证请求,所以我认为它提供了类似接口与一些方法来执行认证操作,并且这个接口将由特定的认证提供者来实现(根据认证技术选择)
身份验证管理器填充安全上下文意味着什么。 Spring 中的 *Security Context** 到底是什么?它是存储与 Principal 相关的信息(例如在 Web 应用程序上通过身份验证的用户)和该主体的 授权 列表的“地方”吗?有保障的资源? (例如登录的用户以及该用户可以对受保护的资源执行哪些操作?)是正确的还是我遗漏了什么?
然后有一个 Security Interceptor 我认为它必须是一个代理类,它使用类似于 before advice AOP 机制的东西,它在某些特定联合之前执行安全建议观点。联合点是安全资源上的操作(例如安全 bean 上的方法执行)。
看图片我认为代理从 Security Context 获取此信息,其中包含主体(登录用户)及其授权(此登录用户可以执行哪些操作),因此它可以创建之前的建议以检查此操作。是对的还是我错过了什么?
AccessDecision Manager 组件代表什么?图片中显示的选民是什么?
Tnx
【问题讨论】:
你看过主要的 Spring Security 参考文档吗?它讨论了这些组件。 【参考方案1】:安全上下文包含有关当前用户的安全信息(名称、登录名、权限...)。它绑定到当前线程和会话https://***.com/a/6408377/280244
身份验证管理器将在用户登录到安全上下文时放入 (poulate) 用户的安全信息。
安全拦截器(方法或 Http 请求)将在调用受保护/受保护的资源之前拦截调用。它从安全上下文中获取有关当前用户的信息。允许调用的要求规则是从某些配置(xml、注释、...)中获得的。当前用户是否符合所需规则的决定委派给Access Decision Manger
Access Decision Manger 不会自行实施 desision 规则,而是使用(不同的)Voters 投票赞成访问被授予,访问被拒绝(或弃权)。
@见:Spring Security Reference: Chapter 13 Authorization Architecture
【讨论】:
以上是关于这个 Spring Security 图是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章
实现 Spring Security UserDetails 的 JPA 实体的含义是啥?
Spring Boot 的 Spring Security 默认凭据是啥?