翻译于 2013/09/12 08:09
HTTP基础认证(BA)是一种简单的认证机制。当一个web客户端需要保护任何web资源的时候,服务器会发送一个带有401状态码(未授权)的HTTP回应,还有类似WWW-Authenticate: Basic realm="realm here" 的 WWW-Authenticate HTTP头。而浏览器这时候就会弹出一个登录对话框,提示输入用户名和密码。
这个示例展示了如何使用Spring Security框架配置HTTP基础认证。
在这篇文章中使用到的工具和技术有:
我们将修改我们前面发布的Spring Security 3 Hello World 示例,为其加入配置HTTP 基础认证的内容。
注意:HTTP基础认证并不是一个安全的用户认证方法,要是Web客户端和服务器之间的链接不安全的话。在传输的过程中,用户的认证凭据是用BASE64编码的,但没有采取加密或者散列化措施。因此如果凭据存在被截获的可能,那么绕过HTTPS的基础认证也能够被使用。
在Spring Security xml配置文件中,仅仅添加<http-basic/> 就可配置HTTP基本认证。
File : WEB-INF/spring-security.xml<beans:beans xmlns="http://www.springframework.org/schema/security" xmlns:beans="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.1.xsd"> <http> <intercept-url pattern="/secured/*" access="ROLE_USER" /> <!-- Adds Support for basic authentication --> <http-basic/> </http> <authentication-manager> <authentication-provider> <user-service> <user name="srccodes" password="password" authorities="ROLE_USER" /> </user-service> </authentication-provider> </authentication-manager> </beans:beans>
启动服务端并部署web应用。尝试打开页面http://:/spring-security-http-basic-authentication/secured/mypage.
HTTP Response Header sent by the server
HTTP/1.1 401 Unauthorized Server: Apache-Coyote/1.1 WWW-Authenticate: Basic realm="Spring Security Application" Content-Type: text/html;charset=utf-8 Content-Length: 981 Date: Mon, 09 Sep 2013 10:47:14 GMT浏览器会打开认证对话框提示输入用户名和密码。
对于错误的凭证,下面的认证失败的消息也会显示出来。
输入正确的用户名和密码,你可以访问受保护的页面。
GET /spring-security-http-basic-authentication/secured/mypage HTTP/1.1 Host: localhost:8080 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:17.0) Gecko/20100101 Firefox/17.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-US,en;q=0.5 Accept-Encoding: gzip, deflate DNT: 1 Connection: keep-alive Cookie: JSESSIONID=896331E26095C95449516FCBF2E0E93C; __atuvc=28%7C31%2C0%7C32%2C0%7C33%2C215%7C34%2C59%7C35 Authorization: Basic c3JjY29kZXM6cGFzc3dvcmQ=
评论删除后,数据将无法恢复
评论(15)
引用来自“kingdelee”的评论
引用来自“开源狂人”的评论
又说shiro了,真正用过acegi的再说那个牛逼。shiro只能说简单,苦逼用着舒服而已,从功能上说,ss领先好几条街。
引用来自“开源狂人”的评论
又说shiro了,真正用过acegi的再说那个牛逼。shiro只能说简单,苦逼用着舒服而已,从功能上说,ss领先好几条街。
引用来自“微激光”的评论
shiro更好
auth_basic "Authorization Required";
auth_basic_user_file /path/to/your/.htpasswd;