Bitbucket API - 无法从 JWT 生成访问令牌

Bitbucket API - Unable to Generate Access Token from JWT

我正在使用 Bitbucket Connect 应用程序并从 webhook 事件中获取 JWT 令牌。 当我使用最新的 JWT 获取 access token 时,访问令牌 API 返回空白作为响应。

API:

curl -X POST -H "Authorization: JWT {jwt_token}" \ https://bitbucket.org/site/oauth2/access_token \ -d grant_type=urn:bitbucket:oauth2:jwt

示例:

curl -X POST -H "Authorization: JWT ey*****XVCJ9.eyJpc3MiOi****asdfQ.**BBD**" \
  https://bitbucket.org/site/oauth2/access_token \
  -d grant_type=urn:bitbucket:oauth2:jwt

回应

{blank}

API参考:

https://developer.atlassian.com/cloud/bitbucket/oauth-2/

谢谢

在将 sub 密钥添加到有效负载之前,我遇到了同样的问题。将值设置为在应用程序安装生命周期事件期间 clientKey 中收到的值。

我按照此文档生成了访问令牌并且成功了。 https://pawelniewiadomski.com/2016/06/06/building-bitbucket-add-on-in-rails-part-7/

使用 Bitbucket Cloud API

生成访问令牌的大部分内容
def get_access_token
  unless current_jwt_auth
    raise 'Missing Authentication context'
  end

  # Expiry for the JWT token is 3 minutes from now
  issued_at = Time.now.utc.to_i
  expires_at = issued_at + 180

  jwt = JWT.encode({
                       iat: issued_at,
                       exp: expires_at,
                       iss: current_jwt_auth.addon_key,
                       sub: current_jwt_auth.client_key
                   }, current_jwt_auth.shared_secret)

  response = HTTParty.post("#{current_jwt_auth.base_url}/site/oauth2/access_token", {
      body: {grant_type: 'urn:bitbucket:oauth2:jwt'},
      headers: {
          'Content-Type' => 'application/x-www-form-urlencoded',
          'Authorization' => 'JWT ' + jwt
      }
  })

  if response.code == 200
    Response.new(200, response.parsed_response)
  else
    Response.new(response.code)
  end
end