Spring Security
文章平均质量分 91
Spring Security
爱尚你1993
初入IT
展开
-
Spring Security启动流程
SecurityConfigurer用来配置SecurityBuilder的超类。所有SecurityConfigurer首先调用其init(SecurityBuilder)方法。再调用了所有init(SecurityBuilder)方法之后,调用每个configure(SecurityBuilder)方法。public interface SecurityConfigurer<O, B extends SecurityBuilder<O>> { /** 初始化Se.原创 2022-04-26 18:12:01 · 975 阅读 · 0 评论 -
Servlet 身份验证体系结构(源码)
参考BlogAuthentication表示身份验证请求的令牌,或AuthenticationManager.authenticate(Authentication)方法处理请求后经过身份验证的主体的令牌。一旦请求通过身份验证,身份验证通常会存储在由SecurityConextHolder通过所使用的身份验证机制管理的线程本地SecurityContext中。无需使用Spring Security的任何一种身份验证机制,即可通过创建一个身份验证实例并使用以下代码来实现显式身份验证:Securit原创 2022-04-26 17:17:47 · 291 阅读 · 0 评论 -
认证事件(Authentication Events)
对于每个成功或失败的身份验证,将分别触发一个 AuthenticationSuccessEvent 或 AbstractAuthenticationFailureEvent 。要侦听这些事件,你必须首先发布一个 AuthenticationEventPublisher,Spring Security 的 DefaultAuthenticationEventPublisher 可能会做得很好:@Beanpublic AuthenticationEventPublisher authenticationE翻译 2022-04-05 17:27:57 · 1276 阅读 · 0 评论 -
匿名认证(Anonymous Authentication)
通常认为采用“默认拒绝”是一种良好的安全实践,在这种情况下,您可以明确指定允许的内容,并禁止其他内容。定义未经身份验证的用户可以访问的内容也是类似的情况,特别是对于 web 应用程序。许多站点要求用户必须对除了一些 url (例如主页和登录页面)以外的任何内容进行身份验证。在这种情况下,为这些特定 url 定义访问配置属性比为每个安全资源定义访问配置属性更容易。换句话说,有时候说 role_something 是默认需要的,并且只允许该规则的某些异常,比如用于应用程序的登录、注销和主页。您还可以从过滤器链中翻译 2022-04-05 17:11:38 · 4097 阅读 · 0 评论 -
Remember-Me
Remember-me 或者 persistent-login 身份验证是指网站能够在会话之间记住主体的身份。这通常是通过向浏览器发送 cookie 来实现的,在以后的会话中检测到 cookie 并完成自动登录。Spring Security 提供了执行这些操作所需的挂钩,并有两个具体的 remember-me 实现。一种使用散列来保持基于 cookie 的令牌的安全性,另一种使用数据库或其他持久存储机制来存储生成的令牌。注意,这两个实现都需要 UserDetailsService。如果您使用的身份.翻译 2022-04-05 16:50:44 · 153 阅读 · 0 评论 -
会话管理.
检测超时(Detecting Timeouts)您可以配置 SpringSecurity 来检测无效会话 ID 的提交,并将用户重定向到适当的 URL。这是通过会议管理部分实现的:@Overrideprotected void configure(HttpSecurity http) throws Exception{ http .sessionManagement(session -> session .invalidSessionUrl("/i翻译 2022-04-05 10:52:35 · 334 阅读 · 0 评论 -
用户密码的存储机制
In-Memory AuthenticationSpring Security 的 InMemoryUserDetailsManager 实现了 UserDetailsService,以支持存储在内存中的基于用户名/密码的身份验证。InMemoryUserDetailsManager 通过实现 UserDetailsManager 接口提供对 UserDetails 的管理。当 Spring Security 配置为接受用户名/密码进行身份验证时,它使用基于 UserDetails 的身份验证。在这个示翻译 2022-04-05 08:00:00 · 529 阅读 · 0 评论 -
用户名/密码认证
表单登录让我们来看看基于表单的登录在 Spring Security 中是如何工作的。首先,我们看到如何将用户重定向到登录表单。该图构建了我们的 SecurityFilterChain 图。首先,用户向未授权的资源/私有发出未经身份验证的请求。Spring Security 的 FilterSecurityInterceptor 通过抛出 AccessDeniedException 表示拒绝未经身份验证的请求。由于用户没有经过身份验证,ExceptionTranslationFilter 启翻译 2022-04-05 00:59:55 · 8208 阅读 · 0 评论 -
Servlet 身份验证体系结构
SecurityContextHolder在Spring Security的身份验证模型的核心是SecurityConextHolder。它包含SecurityContext。SecurityContextHolder 是 Spring Security 存储被验证者的详细信息的地方。Spring Security 不关心 SecurityContextHolder 是如何填充的。如果它包含一个值,则将其用作当前经过身份验证的用户。表明用户已通过身份验证的最简单方法是直接设置 SecurityCon翻译 2022-04-05 00:26:58 · 279 阅读 · 0 评论 -
Spring Security 的体系结构
回顾 FiltersSpring Security 的 Servlet 支持是基于 Severlet 过滤器的,因此通常先看看过滤器的角色是有帮助的。下面的图片显示了单个 HTTP 请求的处理程序的典型分层。客户机向应用程序发送一个请求,容器创建一个 FilterChain(过滤器链),其中包含过滤器和Servlet,这些过滤器和Servlet应根据请求URI的路径处理HttpServletRequest。一个Servlet可以处理单个HttpServletRequest和HttpServletRes翻译 2022-04-04 18:16:53 · 234 阅读 · 0 评论