【问题标题】:GitHub App Access Tokens API ERROR : Integration must generate a public keyGitHub App Access Tokens API 错误:集成必须生成公钥
【发布时间】:2019-02-19 12:34:14
【问题描述】:

我正在开发 GitHub Apps apis,我需要使用 jwt 令牌获取访问令牌以进行安装。

我能够使用 link 从私钥生成 JWT 令牌,但是当我尝试通过 Postman 为安装生成访问令牌时,它说:

请求:

网址:https://api.github.com/app/installations/8/access_tokens

授权:不记名(JWT 令牌)

接受:application/vnd.github.machine-man-preview+json

回应:

{
    "message": "Integration must generate a public key",
    "documentation_url": "https://developer.github.com/v3"
    }

我用来生成 JWT 令牌的代码如下:

String privKeyStr = "myprivatekey";
            byte[] data = Base64.decodeBase64(privKeyStr);
            /* Add PKCS#8 formatting */
            ASN1EncodableVector v = new ASN1EncodableVector();
            v.add(new ASN1Integer(0));
            ASN1EncodableVector v2 = new ASN1EncodableVector();
            v2.add(new ASN1ObjectIdentifier(PKCSObjectIdentifiers.rsaEncryption.getId()));
            v2.add(DERNull.INSTANCE);
            v.add(new DERSequence(v2));
            v.add(new DEROctetString(data));
            ASN1Sequence seq = new DERSequence(v);
            byte[] privKey = seq.getEncoded("DER");
            
            PKCS8EncodedKeySpec spec = new  PKCS8EncodedKeySpec(privKey);
            KeyFactory fact = KeyFactory.getInstance("RSA");
            PrivateKey key = fact.generatePrivate(spec);
            long nowMillis = System.currentTimeMillis();
            long expiremilis = 60000l*5l;
            Date now = new Date(nowMillis);

            Date expireDate = new Date(nowMillis+expiremilis); 
            
            //retStr = Jwts.builder().setClaims(claims).signWith(SignatureAlgorithm.RS256,key).compact();
            String compactJws = Jwts.builder()
                    .setSubject("TestingApp")
                     .setIssuer("4")
                    .setIssuedAt(now)
                     .setExpiration(expireDate)
                     .signWith(SignatureAlgorithm.RS256,key)
                     .compact();
            System.out.println(compactJws);

我用谷歌搜索了它,但找不到原因。

【问题讨论】:

    标签: java github jwt rsa github-api


    【解决方案1】:

    看来这里唯一的问题是您需要将颁发者 (setIssuer) 设置为您的 GitHub 应用程序 ID,这可能不是 4

    【讨论】:

      猜你喜欢
      • 2012-04-29
      • 2020-03-22
      • 2016-11-29
      • 2012-04-14
      • 1970-01-01
      • 2014-01-04
      • 2017-01-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多