第二章 Spring Security起步

来源:互联网 发布:房卡斗牛源码 编辑:程序博客网 时间:2024/05/01 04:24

名词解释

1、安全审计

2、认证

认证识别系统中的某一个用户,并将其与一个可信任的实体关联。

3、授权

授权保证授权过的用户能够对功能和数据进行恰当的访问。

第二章 Spring Security起步

核心概念

认证

Spring Security扩展了Java标准概念中的已认证安全实体(java.security.Principal),它被用来唯一标识一个认证过的实体。

安全实体等同于用户。

授权

涉及两个方面:

一:安全实体与权限的匹配关系(也叫角色)

二:分配权限检查给系统中要进行安全保护的资源。

对于一个资源,判断用户权限和资源需要权限是否有交集,即判断该用户是否可以访问该资源。


请求是怎样被处理的?

servlet请求按照一定的顺序从一个过滤器到下一个穿过整个过滤器链,最终到达目标servlet。与之相对的是,当servlet处理完请求并返回一个response时,过滤器链按照相反的顺序再次穿过所有的过滤器。

自动配置的选项为你建立了十个Spring Security的过滤器。



在auto-config场景下,发生了什么事情?

在Spring Security 3 中,使用auto-config会自动提供以下三个认证相关的功能:

*HTTP基本认证

*Form登录认证

*退出

用户是怎样认证的?


AbstractAuthenticationProcessingFilter:它在基于web的认证请求中使用。处理包含认证信息的请求,如认证信息可能是form POST提交的、SSO信息或者其他用户提供的。创建一个部分完整的Authentication对象以在链中传递凭证信息。

AuthenticationManager:它用来检验用户的凭证信息,或者会抛出一个特定的异常(校验失败的情况)或者完整填充Authentication对象,将会包含了权限信息。

AuthenticationProvider:它为AuthenticationManager提供凭证校验。一些AuthenticationProvider的实现基于凭证信息的存储,如数据库,来判定凭证信息是否可以被认可。

Authentication存储了用户的详细信息,包括唯一标识(用户名)、凭证信息(密码)以及本用户被授予的一个或多个权限(GrantedAuthoriry)。



spring_security_login是什么?我们怎么到达这个界面的?

spring_security_login在DefaultLoginPageGeneratingFilter中命名的。

UsernamePasswordAuthenticationFilter是通过<http>配置指令的<form-login>子元素来进行配置的。j_spring_security_check并不对应任何应用中的物理资源,它只是UsernamePasswordAuthenticationFilter监视的一个基于form登录的URL。

用户的凭证信息是在哪里被校验的?

<authentication-provider>声明默认谁实例化一个内置的实现,即DaoAuthenticationProvider。

DaoAuthenticationProvider是AuthenticationProvider的简单封装实现并委托UserDetailsService接口的实现类进行处理。UserDetailsService负责返回UserDetails的一个实现类。


什么时候校验不通过?

请求是怎样被授权的?

在Spring Security的默认过滤器中,最后一个servlet过滤器是FilterSecurityInterceptor,作用是判断一个特定的请求是被允许还是被拒绝。

在Spring Security中,AccessDecisionManager接口定义了两个简单而合理的方法,它们能够用于请求的决策判断流程:

*supports:这个逻辑操作实际上包含两个方法,它们允许AccessDecisionManager的实现类判断是否支持当前的请求。

*decide:基于请求的上下文和安全配置,允许AccessDecisionManager去核实访问是否被允许以及是否能够被接受。decide方法实际上没有返回值,通过抛出异常来表明对请求访问的拒绝。











0 0
原创粉丝点击