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

如何告知Jira API我使用API令牌而非密码进行Basic认证

报错根因

你代码构造Basic认证凭证的逻辑存在低级错误:执行base64编码时传入的是固定字面量b"jira_user:jira_token",没有把之前定义的账号邮箱、API令牌变量的实际值拼接进去,Jira收到的认证信息是无效字符串,识别不到合法API令牌,就会返回密码认证已废弃的401错误。

修复方案

你可以任选以下一种写法调整代码:

  • 手动构造认证头的修正写法:把变量实际值拼接后再做编码,不要直接写变量名字面量
(venv) $ cat fixed_demo.py
import base64
import requests

jira_user = 'me@myorg.com'
jira_token = '9rXXXXXXXXXX5B'

# 正确拼接变量值后转字节串编码
cred =  "Basic " + base64.b64encode(f"{jira_user}:{jira_token}".encode("utf-8")).decode("utf-8")
print("cred =", cred)

headers = {
   "Accept": "application/json",
   "Content-Type": "application/json",
   "Authorization" : cred
}

projectKey = "NETOP-1987"
url = f"https://myorg.atlassian.net/rest/api/3/search?jql=key={projectKey}"

response = requests.get(url, headers=headers)

print("response =", response)
print("response.text =", response.text)
  • 更稳妥的简化写法:直接用requests库自带的Basic认证能力,无需手动处理base64编码,避免写错
import requests
from requests.auth import HTTPBasicAuth

jira_user = 'me@myorg.com'
jira_token = '9rXXXXXXXXXX5B'

headers = {
   "Accept": "application/json",
   "Content-Type": "application/json"
}

projectKey = "NETOP-1987"
url = f"https://myorg.atlassian.net/rest/api/3/search?jql=key={projectKey}"

# 传入认证信息,库自动完成标准Basic认证逻辑
response = requests.get(
    url,
    headers=headers,
    auth=HTTPBasicAuth(jira_user, jira_token)
)

print("response =", response)
print("response.text =", response.text)
注意事项
  • 认证用的账号字段必须是你Atlassian账号的绑定邮箱,不能用Jira内显示的用户名
  • 确认传入的第二字段是账号对应的API令牌,不是账号登录密码
  • 确保你的账号对目标项目有对应访问权限,避免认证通过后返回权限类报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 17:18:41