Christ517 2024-06-30 17:10 采纳率: 0%
浏览 3

HTTPDigestAuth认证权限失败,请问是什么原因,通过jmeter授权可以成功,对比了Authorization认证头是一样的

用户名和密码

username = 'test123'
password = '12345678'
login_data =json.dumps({"captcha": "2", "agentType": 1, "clientNonce": "wcs0520240621104331267ceeh", "cuType": "4"})

创建认证对象

auth = HTTPDigestAuth(username, password)
headers = {'Content-Type': "application/json;charset=UTF-8"}

发起请求

response = requests.post(url,data=login_data,auth=auth ,headers=headers )

C:\Users\HP\PycharmProjects\IMS\venv\Scripts\python.exe C:/Users/HP/PycharmProjects/demo/testCase/testlogin1.py
2024-06-30 16:49:22,469 DEBUG Starting new HTTP connection (1): 172.16.11.206:10000
2024-06-30 16:49:22,479 DEBUG http://172.16.11.206:10000/ "POST /uas/v1/api/user/login HTTP/1.1" 401 None
2024-06-30 16:49:22,492 DEBUG http://172.16.11.206:10000/ "POST /uas/v1/api/user/login HTTP/1.1" 401 None
2024-06-30 16:49:22,492 DEBUG
Response Received:
2024-06-30 16:49:22,492 DEBUG Status Code: 401
2024-06-30 16:49:22,492 DEBUG Response Headers:
2024-06-30 16:49:22,492 DEBUG User-Agent: python-requests/2.32.3
2024-06-30 16:49:22,492 DEBUG Accept-Encoding: gzip, deflate
2024-06-30 16:49:22,492 DEBUG Accept: /
2024-06-30 16:49:22,492 DEBUG Connection: keep-alive
2024-06-30 16:49:22,492 DEBUG Content-Type: application/json;charset=UTF-8
2024-06-30 16:49:22,492 DEBUG Content-Length: 92
2024-06-30 16:49:22,492 DEBUG Authorization: Digest username="test123", realm="realm@host.com", nonce="0fee4ed0a1ba37aac880b70a5b5f002a02", uri="/uts/v1/api/user/login", response="66517571f35b931df9a05cf8bf16a9ad", opaque="null", qop="auth", nc=00000001, cnonce="23561c6f1fc10bbd"
2024-06-30 16:49:22,492 DEBUG
Response Content:
2024-06-30 16:49:22,492 DEBUG {"resultCode":100002,"resultDesc":"鉴权失败"}

  • 写回答

2条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-06-30 17:10
    关注

    引自免费微信小程序:皆我百晓生

    从你给出的日志和代码来看,你在使用 HTTPDigestAuth 进行认证时遇到了问题,尽管你的请求看起来与通过 JMeter 的授权方式相同,但仍然返回了 401 未授权的响应。要解决这个问题,你可以按照以下步骤进行检查和调试:

    1. 核对URL和端点:确保你请求的URL和端点正确无误。你的日志中显示的是 http://172.16.11.206:10000/uas/v1/api/user/login,确保这是你期望访问的地址。
    2. 核对HTTP请求方法:确保你的请求方法是 POST,因为这是登录接口通常要求的方法。
    3. 核对头部信息:你已经设置了 Content-Type"application/json;charset=UTF-8",并且添加了一些其他头部信息。请确保其他必要的头部(如 Authorization)也设置正确。
    4. 检查认证参数:对于 HTTPDigestAuth,确保你提供的用户名和密码是正确的。另外,检查是否有其他认证参数或步骤(如验证码等)需要处理。
    5. 检查服务器响应:服务器返回的响应内容 {"resultCode":100002,"resultDesc":"鉴权失败"} 表明认证失败。这可能是因为你提供的认证信息(如用户名、密码、nonce等)与服务器期望的不匹配。尝试核对这些值与服务器期望的值是否一致。
    6. 使用工具捕捉请求:使用如JMeter或浏览器的开发者工具来捕捉成功的请求,并对比你的Python请求,确保所有的请求参数和头部信息都一致。
    7. 检查服务器日志:如果可能的话,查看服务器的日志以获取更多关于为什么认证失败的详细信息。
    8. 尝试不使用 HTTPDigestAuth:如果可能的话,尝试使用其他认证方式(如基本认证或其他API密钥),看看是否可以成功。这可以帮助确定问题是否与特定的认证方式有关。
    9. 更新库和依赖:确保你使用的 requests 库和其他相关依赖是最新版本的,因为旧版本的库可能存在已知的问题或不兼容的情况。

    如果以上步骤都无法解决问题,你可能需要联系API的提供者或管理员以获取更多关于认证失败的具体原因和解决方案。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 6月30日

悬赏问题

  • ¥15 三分类机器学习模型可视化分析
  • ¥15 本地测试网站127.0.0.1 已拒绝连接,如何解决?(标签-ubuntu)
  • ¥50 Qt在release捕获异常并跟踪堆栈(有Demo,跑一下环境再回答)
  • ¥30 python,LLM 文本提炼
  • ¥15 关于将inet引入的相关问题
  • ¥15 关于一个倒计时的操作和显示设计
  • ¥15 提问STK的问题,哪位航天领域的同学会啊
  • ¥15 苹果系统的mac m1芯片的笔记本使用ce修改器使用不了
  • ¥15 单相逆变的电压电流双闭环中进行低通滤波PID算法改进
  • ¥15 关于#java#的问题,请各位专家解答!