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

Jira脚本调用Azure DevOps API遇401未授权错误排查求助

问题:使用Groovy调用Azure DevOps API时返回401未授权错误

我在Jira Script Runner的Groovy脚本中,尝试用Basic Authentication和Personal Access Token(PAT)调用Azure DevOps API。按照要求将令牌转成Base64编码,编码代码如下:

String _AuthToken = "itecor:[my personnal token]".bytes.encodeBase64().toString()

API调用时在请求头传入令牌的代码如下:

def http = new HTTPBuilder(graph_base_Url)
        
http.request(POST) {
    requestContentType = ContentType.JSON
    body=[
        definitionId: _definitionId,
        variables: [ 
            InstanceNum: _instanceNb,
            Version: _version
        ]
    ]

    headers.'Authorization' = "Basic ${_AuthToken}"
    response.success = { resp, json ->
         _jobInfo=json.toString()
    }
}

执行后报错:status code: 401, reason phrase: Unauthorized,请问哪里操作有误?


可能的问题及解决方法

  • Base64编码格式错误:Azure DevOps的Basic Auth要求格式为用户名:PAT,但此处用户名需留空(不需要填写实际用户名)。你当前用的itecor:[my personnal token]不符合要求,应改为:[你的PAT],即仅保留:+PAT的组合再进行编码。
  • PAT权限不足:检查你的PAT是否拥有调用目标API的权限,比如触发流水线需要Build模块的队列构建权限,且PAT的作用域要覆盖目标项目或组织。
  • 编码字符集问题:直接使用.bytes会依赖系统默认字符集,可能导致编码异常,建议明确指定UTF-8编码:
    String authString = ":${yourPAT}"
    String _AuthToken = authString.getBytes("UTF-8").encodeBase64().toString()
    
  • API端点或参数错误:确认graph_base_Url是正确的Azure DevOps API端点(比如流水线触发端点应为https://dev.azure.com/{组织名}/{项目名}/_apis/build/builds?api-version=7.1-preview.7这类格式),同时检查definitionId等参数是否匹配目标流水线。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 03:43:26