You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux下Python通过OS会话数据实现HTTP请求认证的问题求助

解决方案

方案1:改用NTLM认证(适用于目标服务支持NTLM的场景)

如果目标HTTP服务支持NTLM认证(常见于Windows IIS服务),可在Linux上用requests-ntlm库实现本地用户的OS认证,无需依赖Kerberos:

  1. 安装依赖库
pip install requests requests-ntlm
  1. 示例代码
import requests
from requests_ntlm import HttpNtlmAuth

# 用户名格式需为「本地主机名\用户名」
local_hostname = "你的Linux主机名"
local_username = "你的本地用户名"

r = requests.get(
    "目标URL",
    auth=HttpNtlmAuth(f"{local_hostname}\\{local_username}", ""),  # 空密码表示使用当前登录用户凭据
    verify=False
)

print(r.status_code)
print(r.json())

若空密码无效,可尝试填入本地用户的登录密码。

方案2:配置本地Kerberos票据(适用于目标服务仅支持Kerberos的场景)

若目标服务只接受Kerberos认证,需为Linux本地用户生成有效Kerberos票据:

  1. 安装Kerberos工具
sudo apt-get install krb5-user  # Debian/Ubuntu系列
# 或
sudo yum install krb5-workstation  # RHEL/CentOS系列
  1. 配置/etc/krb5.conf
    添加本地域相关配置,示例:
[libdefaults]
    default_realm = YOUR_LOCAL_REALM  # 大写格式,如LOCALHOST.LOCALDOMAIN
    dns_lookup_realm = false
    dns_lookup_kdc = true

[realms]
    YOUR_LOCAL_REALM = {
        kdc = localhost:88
        admin_server = localhost:749
    }

[domain_realm]
    .your-local-domain = YOUR_LOCAL_REALM
    your-local-domain = YOUR_LOCAL_REALM
  1. 生成Kerberos票据
kinit 你的本地用户名

执行后输入本地用户密码完成票据生成。

  1. 发起请求
import requests
from requests_kerberos import HTTPKerberosAuth

r = requests.get(
    "目标URL",
    auth=HTTPKerberosAuth(),
    verify=False
)

print(r.status_code)
print(r.json())

关键排查点

  • 确认目标服务认证方式:查看服务端返回的WWW-Authenticate响应头,包含Negotiate则支持Kerberos,包含NTLM则支持NTLM。
  • 本地用户权限:确保Linux本地用户在目标服务中拥有访问权限,避免因权限不足触发401错误。

内容的提问来源于stack exchange,提问作者gjvignesh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 14:25:13