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

Jira插件权限问题:非授权用户获取全部项目

问题分析与解决方案

核心问题在于你当前生成的JWT是以插件自身身份发起请求,而非模拟用户身份。Jira会基于插件的权限返回项目列表,而非当前用户的权限——哪怕你添加了sub字段,若插件未获得用户模拟权限,Jira会直接忽略该字段。

解决步骤

1. 给插件添加用户模拟权限

在你的插件atlassian-connect.json配置文件中,把impersonate权限加入scopes数组:

"scopes": [
  "read:jira-work",
  "impersonate"
]

这个权限是让Jira认可插件代表用户发起请求的前提,只有配置后,sub字段才会被用于权限校验。

2. 生成包含用户上下文的正确JWT

检查你使用的atlassian_jwt库是否支持传入额外payload参数,若支持,将用户的accountId通过extra_payload传入encode_token方法:

jwt_token = atlassian_jwt.encode_token(
    "GET",
    url=data.baseUrl.strip("/") + "/rest/api/3/project/search",
    clientKey=data.key,
    sharedSecret=data.sharedSecret,
    extra_payload={"sub": "朋友的accountId"}
)

如果库不支持extra_payload参数,需要手动构造JWT payload,确保包含以下核心字段:

  • iss: 插件的clientKey
  • sub: 用户的accountId
  • qsh: 请求签名哈希(由请求方法、URL生成)
  • iat: 签发时间
  • exp: 过期时间

3. 验证请求头格式

发起API请求时,必须将JWT放在Authorization头中,格式如下:

Authorization: JWT {你的JWT令牌}

额外说明

  • 你之前添加sub无效的核心原因是插件未声明impersonate权限,Jira默认忽略该字段,仍以插件身份返回数据。
  • 修改配置后需要重新上传插件,确保权限设置生效。

内容的提问来源于stack exchange,提问作者Kenan Džafić

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 19:31:00