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

如何通过Kerberos认证内部企业代理以访问外部API

实现Kerberos认证的企业代理访问

要替换之前的Basic认证,改用Kerberos(Negotiate)认证通过企业代理访问外部API,你可以借助requests库和requests-kerberos扩展来实现,步骤如下:

1. 安装依赖包

首先安装必要的Python包:

pip install requests requests-kerberos

2. 确保本地Kerberos票证有效

Kerberos认证依赖有效的服务票证,你需要先通过kinit命令获取票证(适用于Linux/macOS):

kinit your-username@YOUR-COMPANY-REALM.COM

如果是Windows域环境下的机器,通常会自动获取当前登录用户的Kerberos票证,无需手动执行kinit。

同时要确保本地krb5.conf(Linux/macOS)或krb5.ini(Windows)配置正确,指向企业的Kerberos KDC服务器。

3. 修改代理认证代码

不再需要在代理URL中嵌入用户名密码,而是通过Kerberos认证适配器处理代理的Negotiate认证:

import requests
from requests_kerberos import HTTPKerberosAuth, OPTIONAL

# 配置代理地址(无需用户名密码)
proxies = {
    "http": "http://proxy_server:proxy_port",
    "https": "https://proxy_server:proxy_port"
}

# 创建Kerberos代理认证对象
# mutual_authentication=OPTIONAL 表示不需要代理对客户端的双向认证,适合多数企业场景
proxy_auth = HTTPKerberosAuth(mutual_authentication=OPTIONAL)

# 发送请求时指定代理和代理认证
try:
    response = requests.get(
        "https://your-external-api-url.com",
        proxies=proxies,
        proxy_auth=proxy_auth,
        # 如果企业代理使用自签名证书,可指定CA证书路径,或临时用verify=False(不建议生产环境)
        # verify="/path/to/company-ca-cert.pem"
    )
    response.raise_for_status()
    print("API请求成功:", response.text)
except requests.exceptions.RequestException as e:
    print("请求失败:", str(e))

关键注意事项

  • 如果代理要求双向Kerberos认证,将mutual_authentication参数改为REQUIRED
  • 生产环境中不要使用verify=False,应配置企业内部CA证书路径以确保安全
  • 若遇到票证过期问题,重新执行kinit获取新票证,或配置票证自动续期

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 11:45:33