广州黄埔区开发区建设局网站,好的交互设计网站,免费项目进度管理软件,网站管理和维护在上一篇文章中#xff0c;您学习了如何在基于Spring安全性的Java应用程序中启用Http基本身份验证 #xff0c;现在#xff0c;我们将进一步进一步了解http基本身份验证在Spring安全性中的工作原理。 如果您还记得的话#xff0c;当您使用HTTP Basic进行身份验证时#xf… 在上一篇文章中您学习了如何在基于Spring安全性的Java应用程序中启用Http基本身份验证 现在我们将进一步进一步了解http基本身份验证在Spring安全性中的工作原理。 如果您还记得的话当您使用HTTP Basic进行身份验证时客户端例如浏览器或其他客户端会在http请求标头中发送登录凭据。 标头恰当地命名为Authorization ”它包含基于64的编码字符串该字符串是通过使用冒号将用户名和密码连接起来而创建的例如如果用户名是johnsmith而密码是JOHN3214则它们将被连接为在使用base 64编码算法编码之前先输入johnsmith:JOHN3214 。 服务器在接收到此类请求时将提取Authorization标头的值并使用用于验证用户身份的相同算法Base64对该标头的内容进行解码。 如果您还记得的话我们使用http-basicl; 在XML配置或httpBasic()上方法HttpSecurity目的是能够基本验证。 现在让我们看一下Spring安全性如何确切地支持Http Basic身份验证以及当它收到登录请求并在服务器端启用Http Basic身份验证时事物如何在Spring安全性空间内移动。 Spring Security如何处理Http基本身份验证请求 当您使用http-basicl; 配置元素Spring Security的BasicAuthenticationFitler出现在图中它基本上检查传入的HTTP请求是否包含Authorization标头并且其值以“ Basic”开头。 启动时还将BasicAuthenticationEntryPoint策略配置到ExceptionTranslationFilter中该策略用于处理不包含“ Authorization”标头的请求。 当您从浏览器向受保护的URL例如/admin/users发出http请求而未添加“ Authorization ”标头时Spring Security会抛出一个由ExceptionTranslationFilter处理的拒绝访问的ExceptionTranslationFilter 。 然后此过滤器将委派给AuthenticationEntryPoint接口的特定实现策略 在本例中为BaicAuthenticationEntryPoint 。 此类在响应中添加标头“ WWW-AuthenticateBasic real ” Spring Security Application”然后将401未经授权的HTTP状态代码发送给客户端例如您的浏览器该浏览器知道如何处理此代码并起作用相应地即显示一个对话框提示您输入用户名和密码如下所示 当您输入用户名和密码并提交请求时请求再次遵循过滤器链直到到达BasicAuthenticationFilter为止。 此过滤器检查请求标头以“ Basic ”开头的Authorization标头的位置例如AuthorizationBasic CDWhZGRpbjpvcGVuc2AzYW11。 然后 BaicAuthentictionFilter提取“ Authorization ”标头的内容并使用Base64算法解码登录凭据以从解码的String中提取用户名和密码。 一旦有了该信息过滤器就会创建一个UsernamePasswordAuthenticationToken对象并将其发送到身份验证管理器以标准方式进行身份验证。 如果您不知道AuthenticationManager在Spring安全性登录中的作用那么您可以在Eugen的Learn Spring Security课程中了解有关AuthenticationManager更多信息。 身份验证管理器将要求身份验证提供程序例如在内存中基于JDBC的备份或基于LDAP的身份验证程序检索用户然后使用它创建一个身份验证对象。 该过程是标准的并且独立于将HTTP基本用于身份验证例如也适用于摘要身份验证。 如果您使用的是RESTful Web服务则还可以使用curl命令发送带有“授权”错误的HTTP请求以进行HTTP基本身份验证。 我发现curl是通过从命令行发送各种HTTP命令来测试Web服务的简便方法。 您还可以在我的文章中看到如何测试RESTful Web服务以找到一些curl的实际示例例如发送发布请求使用HTTP基本和摘要身份验证发送请求等。 顺便说一句就像我之前说过的那样基本身份验证并不安全任何能够拦截请求的人都可以解码密码因此它仅用于测试目的而更复杂的摘要身份验证和OAuth用于实际应用中特别是如果您想保护REST API。 在接下来的文章中我将告诉您更多有关保护REST API的信息但是如果您迫不及待建议您使用Spring MasterClass来检阅RESTSpring MasterClass最近也针对Spring Framework 5和Spring Security 5进行了更新。 这就是Spring Security内部HTTP基本身份验证如何工作的全部内容。 您已经了解了HTTP请求命中受保护的URL并请求基本身份验证时发生的情况的完整工作流程。 基本上是BasicAuthenticationFilter和BasicAuthenticationEntryPoint一起完成大部分工作。 其他Spring Security教程和资源 学习Spring Security 4 Basic动手 Spring MVC中RestController和Controller之间的区别 Spring中RequestParam和PathVaraible之间的区别 3个在线课程可以更好地学习Spring Security Spring中 Service Component和Controller之间的区别 5门学习Spring CoreSpring MVC和Spring Boot的课程 Eugen Paraschiv的Spring安全认证课程 感谢您阅读本文如果您喜欢我对Spring Security中Http Basic身份验证如何工作的解释请与您的朋友和同事分享此文章。 如果您对反馈有任何疑问请留下注释。 翻译自: https://www.javacodegeeks.com/2018/01/http-basic-authentication-works-spring-security.html