java基础-http认证

本文详细介绍了Tomcat服务器中的两种认证方式:基本认证与摘要认证。通过web.xml配置文件的具体示例,展示了如何为特定资源设置认证,并分析了各自的优缺点。基本认证简单但不安全,而摘要认证通过哈希提高安全性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基本认证
tomcat中的实现 BasicAuthenticator.java
web.xml
<security-constraint> 
    <web-resource-collection> 
        <web-resource-name>RegisterUsers</web-resource-name> 
        <url-pattern>/b.jsp</url-pattern>
    </web-resource-collection> 
    <auth-constraint>
        <role-name>user</role-name>
    </auth-constraint> 
</security-constraint> 
<login-config> 
    <auth-method>BASIC</auth-method>
    <realm-name>Registered Users</realm-name> 
</login-config> 
<security-role> 
    <role-name>user</role-name>
</security-role>

 
缺点是明码传输,而且base64编码的字符串很容易解码+会引起重放攻击
这一点在tomcat代码中没有避免,没有作控制。

 
 
摘要认证
摘要访问认证是一种协议规定的Web服务器用来同网页浏览器进行认证信息协商的方法。它在密码发出前,先对其应用哈希函数,这相对于HTTP基本认证发送明文而言,更安全。
tomcat中的实现DigestAuthenticator.java
web.xml
<security-constraint> 
    <web-resource-collection> 
        <web-resource-name>RegisterUsers</web-resource-name> 
        <url-pattern>/b.jsp</url-pattern>
    </web-resource-collection> 
    <auth-constraint>
        <role-name>user</role-name>
    </auth-constraint> 
</security-constraint> 
<login-config> 
    <auth-method>DIGEST</auth-method>
    <realm-name>Registered Users</realm-name> 
</login-config> 
<security-role> 
    <role-name>user</role-name>
</security-role>


 缺点是一旦截取到请求很容易就能发起重放攻击,而且也不需要验证了。

tomcat代码的编写者考虑到了这种攻击的可能性,去除了该攻击的可能性
if (principal != null && !digestInfo.isNonceStale()) {

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值