http认证- Basic 认证
最近项目上用到http认真过的basic认证。所以遇到这个问题,做事情心情不可急躁,最开始急于求成,真的是郁闷了下,呵呵。本文主要讲如何在tomcat中配置Basic认证以及工作流程。
1. 项目配置
本测试环境采用的是Java web环境,其他项目环境暂未测试。
a) web.xml
<security-constraint> <web-resource-collection> <web-resource-name> Jiuzhai Application </web-resource-name> <url-pattern>/*</url-pattern> </web-resource-collection> <auth-constraint> <role-name>admin</role-name> </auth-constraint> </security-constraint> <login-config> <auth-method>BASIC</auth-method> <realm-name>My jiuzhai</realm-name> </login-config>
注意这里的<role-name>admin</role-name >标签,这个就是web项目允许的名称,
需要与后面的Tomcat的用户信息相对应。
2. Tomcat配置
本文的测试环境是Tomcat-6.0.35,其他版本暂未测试。
a) tomcat-users.xml
到Tomcat环境的conf目录下找到tomcat-users.xml文件。
<tomcat-users> <role rolename="tomcat"/> <role rolename="role1"/> <role rolename="manager"/> <role rolename="admin"/> <user username="admin" password="admin" roles="admin,manager"/> <user username="tomcat" password="tomcat" roles="tomcat"/> <user username="both" password="tomcat" roles="tomcat,role1"/> <user username="role1" password="tomcat" roles="role1"/> </tomcat-users>
b) 特别注意
这里配置的tomcat用户,必须有1个和上面web.xml配置的相同,不然会报403的错误。
3. 客户端访问
访问http://127.0.0.1:8080/lynch/admin/adminList.jsp
会弹出对话框提示认证,输入admin admin 可以登录。
4. 工作流程(通过firebug可以查看请求头)
a) 工作流程(通过firebug可以查看请求头)
b) 服务器发一个401返回,并含有下面的头
WWW-Authenticate Basic realm="My jiuzhai"
c) 客户端认证,含有下面的头
Authorization Basic dGVzdDp0ZXN0
YWRtaW46YWRtaW4=
”是"admin:admin"的Base64编码。
(可以通过php函数base64_encode()验证)
5. 缺点
密码明文传输,非常不安全。
6. 其他方式
可以用httpclient来的实现,有兴趣的朋友,可自己查阅相关文档。
7. 参考文档
http://robblog.iteye.com/blog/554450