Think_Higher
内存虽快,但不持久,好记性不如烂笔头。
展开
-
Spring Security 存储密码之 JDBC
Spring Security的JdbcDaoImpl实现了UserDetailsService接口,通过使用JDBC提供支持基于用户名和密码的身份验证。JdbcUserDetailsManager扩展了JdbcDaoImpl,通过UserDetailsManager接口提供UserDetails的管理功能。当Spring Security配置为接受用户名/密码进行身份验证时,将使用基于UserDetails的身份验证。原创 2024-01-26 16:46:11 · 129 阅读 · 0 评论 -
Spring Security 密码存储 之 内存认证
Spring Security的InMemoryUserDetailsManager实现了UserDetailsService,以提供对存储在内存中的基于用户名/密码的身份验证的支持。在下面的示例中,我们使用User.withDefaultPasswordEncoder来确保存储在内存中的密码受到保护。在基于XML的配置中,没有简单的方法来使用User.withDefaultPasswordEncoder。前面的示例将密码以安全格式存储,但在入门体验方面还有很多需要改进的地方。原创 2024-01-24 20:56:59 · 94 阅读 · 0 评论 -
Spring Security 之摘要认证
HTTP摘要认证的标准由RFC 2617定义,它更新了由RFC 2069规定的早期版本的摘要认证标准。Spring Security对摘要认证的支持与RFC 2617规定的“auth”质量保护(qop)兼容,并提供了与RFC 2069的向后兼容性。如果需要使用未加密的HTTP(无TLS或HTTPS)并希望最大程度地提高认证过程的安全性,摘要认证被视为更有吸引力的选项。相反,你应该使用单向自适应密码哈希(如 bCrypt、PBKDF2、SCrypt 等)来存储凭据,而这是摘要认证不支持的。原创 2024-01-24 19:49:30 · 133 阅读 · 0 评论 -
Spring Security 之 基本认证
配置的 AuthenticationEntryPoint 是 BasicAuthenticationEntryPoint 的实例,它发送一个 WWW-Authenticate 标头。当用户提交他们的用户名和密码时,BasicAuthenticationFilter 通过从 HttpServletRequest 中提取用户名和密码创建一个 UsernamePasswordAuthenticationToken,这是一种认证类型。首先,用户对未经授权的资源 /private 发出未经身份验证的请求。原创 2024-01-24 19:37:21 · 121 阅读 · 0 评论 -
Spring Security 之 表单登录
当用户提交他们的用户名和密码时,UsernamePasswordAuthenticationFilter从HttpServletRequest实例中提取用户名和密码,创建一个UsernamePasswordAuthenticationToken,这是一种Authentication的类型。通常情况下,这是一个SimpleUrlAuthenticationSuccessHandler,它会重定向到由ExceptionTranslationFilter保存的请求,当我们重定向到登录页面。原创 2024-01-24 17:45:52 · 125 阅读 · 0 评论 -
Spring Security 之 用户名/密码认证
通常,Spring Security会在内部构建一个由DaoAuthenticationProvider组成的AuthenticationManager,用于处理用户名/密码身份验证。在某些情况下,可能仍然希望自定义Spring Security使用的AuthenticationManager实例。例如,您可能需要简单地禁用对缓存用户的凭据擦除。推荐的做法是简单地发布您自己的AuthenticationManager bean,Spring Security会使用它。原创 2024-01-22 21:12:29 · 145 阅读 · 0 评论 -
Spring - Security 之 Servlet身份验证架构
AbstractAuthenticationProcessingFilter是用作验证用户凭据的基础过滤器。在凭据可以被验证之前,Spring Security通常会使用AuthenticationEntryPoint来请求凭据。接下来,AbstractAuthenticationProcessingFilter可以对提交给它的任何认证请求进行身份验证。原创 2024-01-22 20:55:09 · 147 阅读 · 0 评论 -
Spring Security工作原理(三)
如处理安全异常中所示,当请求没有认证且需要认证资源时,需要保存请求以便在认证成功后重新请求受保护的资源。在Spring Security中,这是通过使用RequestCache实现来保存HttpServletRequest来实现的。原创 2024-01-22 15:46:05 · 152 阅读 · 0 评论 -
Spring Security工作原理(二)
大多数情况下,默认安全过滤器足以为应用程序提供安全性。然而,有时您可能想要向安全过滤器链中添加自定义过滤器。例如,假设您想要添加一个过滤器,该过滤器获取请求中的头部信息:租户 ID, 并检查当前用户是否有权访问该租户。根据前面的描述,我们已经可以得知在哪里添加该过滤器,因为我们需要知道当前用户,所以我们需要在认证过滤器后面添加它。(3) return;(4) } }原创 2024-01-22 14:57:11 · 136 阅读 · 1 评论 -
Spring Security工作原理(一)
Spring Security的Servlet支持是基于Servlet过滤器的,因此首先了解过滤器的一般作用是很有帮助的。下图显示了单个HTTP请求处理程序的典型分层结构。处理客户端发送的请求时,容器创建一个FilterChain,其中包含Filter实例和Servlet,根据请求URI的路径处理HttpServletRequest。在Spring MVC应用程序中,Servlet是DispatcherServlet的一个实例。原创 2024-01-19 14:06:22 · 53 阅读 · 0 评论 -
Spring Security的使用条件
由于Spring Security旨在以自包含的方式运行,因此您无需在Java运行时环境中放置任何特殊的配置文件。特别是,您无需配置特殊的Java认证和授权服务(JAAS)策略文件,也无需将Spring Security放置在常见的类路径位置。同样,如果您使用EJB容器或Servlet容器,您无需在任何地方放置任何特殊的配置文件,也无需将Spring Security包含在服务器类加载器中。所有所需的文件都包含在您的应用程序中。Spring Security要求使用Java 8或更高版本的运行时环境。原创 2024-01-17 17:17:44 · 174 阅读 · 0 评论 -
跨站点请求伪造攻击 - Cross Site Request Forgery (CSRF)
最好理解CSRF攻击的方式是看一个具体的例子。假设你的银行网站提供一个表单,允许当前登录用户将钱转账到另一个银行账户。例如,转账表单可能如下所示:原创 2024-01-17 17:07:43 · 184 阅读 · 0 评论 -
Spring Security 中 Authentication和Authorization的区别
Spring Security提供了全面的认证支持。认证是用来验证试图访问特定资源的用户身份的方式。验证用户的常见方式是要求用户输入用户名和密码。一旦认证完成,我们就知道了用户的身份并且可以进行授权。Spring Security内置支持对用户进行认证。简单来说,认证就是【你是谁】原创 2024-01-15 16:02:51 · 83 阅读 · 0 评论