记一次Digest Authentication使用问题查找(Tomcat8.0升级到Tomcat9.0)

这次说一说Disgest Authentication遇到的坑

公司有个项目客户端访问流程需要经过Disgest Authentication,由于公司之前部署该项目在Tomcat8.0;于是本人满怀信心的将tomcat升级(->Tomcat8.5->Tomcat9.0), 结果发现客户端第一次访问接口401后,第二次访问还是401。

 按之前正常流程应该是第一次访问接口返回401,第二次客户提交在摘要认证信息后会返回200。可是现在Tomcat升级后结果却是意料之外,找客户端人员排查问题说暂时没时间,我这人属于急性子,所以只能靠自身解决问题,于是开始抓包分析(抓包工具:wireshark)

1、Tomcat8.0下第一次访问

2、Tomcat9.0下第一次访问返回

3、比较两次数据报文后发现响应消息第一行Header有差异

Tomcat8.0:HTTP/1.1 401 Unauthorized \r\n

Tomcat9.0:HTTP/1.1 401 \r\n

这里提一下这个组成的意义:HTTP-Version Status-Code Reason-Phrase \r\n

HTTP -Version:表示支持的HTTP版本

Status-Code:三个数字的结果代码

Reason-Phrase:描述

4、有了这些信息本人判断客户端应该是通过描述字段去判断是否是401,Unauthorized;Tomcat9.0由于response默认缺少这个字段从而导致客户端不能识别这次response是要经过摘要认证。于是就有了下面解决问题的代码:

response.setHeader("HTTP-Version", "HTTP/1.1");
response.setHeader("Status-Code", "401");
response.setHeader("Reason-Phrase","Unauthorized");

总结:遇到问题先理性分析,理解问题的根源很重要。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值