Python使用OAuth认证JIRA获取Request Token报401签名无效问题求助
JIRA OAuth1 RSA签名无效问题修复方案
你遇到的signature_invalid报错是JIRA OAuth1校验的常见错误,按以下步骤修改配置即可解决:
1. JIRA端配置校验
- 确认JIRA后台应用链接中配置的Consumer Key与代码中
CONSUMER_KEY = "OauthKey"完全一致,大小写敏感 - 确认JIRA应用链接中上传的是配对的公钥文件(jira_publickey.pem),而非本地的私钥文件
- 确认JIRA应用链接的OAuth配置中已勾选
RSA-SHA1作为签名算法,无额外IP/访问权限限制拦截你的请求源
2. 私钥读取逻辑修正
当前私钥读取逻辑未处理编码问题,容易导致私钥格式异常,修改读文件逻辑:
def read(file_path): # 二进制读取后解码,避免编码错误破坏私钥格式 with open(file_path, 'rb') as f: return f.read().decode('utf-8')
3. OAuth1Session初始化参数补全
当前初始化缺省了必要的回调地址参数,修改初始化代码:
# 回调地址填oob代表手动授权模式,无需配置回调服务 oauth = OAuth1Session( CONSUMER_KEY, callback_uri='oob', signature_type="auth_header", signature_method=SIGNATURE_RSA, rsa_key=RSA_KEY )
如果修改后仍然报错,可指定请求方法为GET适配部分旧版本JIRA:
request_token = oauth.fetch_request_token(REQUEST_TOKEN_URL, method='GET')
4. 环境一致性校验
- 确认运行代码的服务器与JIRA服务器时间差不超过5分钟,OAuth1的timestamp校验会拒绝时间差过大的请求
- 确认本地私钥是标准PKCS8格式,没有设置密码保护,如有密码需要额外添加私钥解密参数
- 确认代码运行环境可以正常访问JIRA服务器地址,无代理/防火墙拦截请求
内容的提问来源于stack exchange,提问作者vvazza
相关产品推荐
相关产品推荐

