Jira OAuth - 无法创建应用程序链接

Posted

技术标签:

【中文标题】Jira OAuth - 无法创建应用程序链接【英文标题】:Jira OAuth - Unable to create application link 【发布时间】:2016-05-09 13:54:00 【问题描述】:

我正在尝试创建一个使用 jira 进行身份验证的应用程序。我也在使用Jira Rest api。在文档中,它说使用相同的公钥和使用者密钥来创建文档中给出的应用程序链接。这工作正常,我能够创建访问令牌。但是在this 中提到的java 代码中,我不确定应该为private_key 提供什么。我尝试了两种方法-

    使用 rsa 生成了一个随机私钥并提供它来代替不起作用的 private_key。它给出了异常告诉length too long。我尝试了 2048、1024、512、256 和 128 位。一切都给出了同样的错误。

申请链接:

消费者密钥:硬编码消费者

消费者名称:硬编码消费者

公钥: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxZDzGUGk6rElyPm0iOua0lWg84nOlhQN1gmTFTIu5WFyQFHZF6OA4HX7xATttQZ6N21yKMakuNdRvEudyN / coUqe89r3Ae + rkEIn4tCxGpJWX205xVF3Cgsn8ICj6dLUFQPiWXouoZ7HG0sPKhCLXXOvUXmekivtyx4bxVFD9Zy4SQ7IHTx0V0pZYGc6r1gF0LqRmGVQDaQSbivigH4mlVwoAO9Tfccf + V00hYuSvntU + B1ZygMw2rAFLezJmnftTxPuehqWu9xS5NVsPsWgBL7LOi3oY8lhzOYjbMKDWM6zUtpOmWJA52cVJW6zwxCxE28 / 592IARxlJcq14tjwYwIDAQAB P>

    生成的私钥和公钥对,分别在应用程序链接和代码中提供。但在这种情况下,我无法创建访问令牌。它正在给予 -

申请链接:

消费者密钥:硬编码消费者

消费者名称:硬编码消费者

公钥: MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC0YjCwIfYoprq / FQO6lb3asXrx LlJFuCvtinTF5p0GxvQGu5O3gYytUvtC2JlYzypSRjVxwxrsuRcP3e641SdASwfr mzyvIgP08N4S0IFzEURkV1wp / IpH7kH41EtbmUmrXSwfNZsnQRE5SYSOhh + LcK2w yQkdgcMv11l4KoBkcwIDAQAB P>

Exception in thread "main" java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at com.simontuffs.onejar.Boot.run(Boot.java:340)
    at com.simontuffs.onejar.Boot.main(Boot.java:166)
Caused by: java.lang.RuntimeException: Failed to obtain request token
    at com.atlassian.oauth.client.example.AtlassianOAuthClient.getRequestToken(AtlassianOAuthClient.java:66)
    at com.atlassian.oauth.client.example.JIRAOAuthClient.main(JIRAOAuthClient.java:52)
    ... 6 more
Caused by: net.oauth.OAuthProblemException: signature_invalid
    at net.oauth.client.OAuthResponseMessage.toOAuthProblemException(OAuthResponseMessage.java:83)
    at net.oauth.client.OAuthClient.invoke(OAuthClient.java:306)
    at net.oauth.client.OAuthClient.invoke(OAuthClient.java:260)
    at net.oauth.client.OAuthClient.getRequestTokenResponse(OAuthClient.java:190)
    at com.atlassian.oauth.client.example.AtlassianOAuthClient.getRequestToken(AtlassianOAuthClient.java:57)

谁能解释我应该怎么做?我在这里错过了什么吗? 还有共享密钥、消费者密钥和公钥有什么区别?

提前致谢

【问题讨论】:

如果我没记错的话,您应该在客户端应用程序中使用私钥来签署请求。当然,您需要一对匹配的私钥和公钥。不幸的是我不知道 Java api,因为我使用了 .NET Tnx 回复@Robert。我已经以某种方式解决了这个问题并发布了答案 【参考方案1】:

由于 JIRA 基本 URL 中以“/”结尾(由 net.oauth.OAuthProblemException: signature_invalid 引起)而发生异常。

正确的请求是:

java -jar rest-oauth-client-1.0.one-jar.jar requestToken https://jira_base_server_url http://your_redirctedUrl

【讨论】:

【参考方案2】:

我通过使用documentation 中提供的公共密钥和example 中提供的私钥以某种方式解决了这个问题

但是,我仍然无法使用我生成的私钥和公钥创建应用程序链接。

【讨论】:

以上是关于Jira OAuth - 无法创建应用程序链接的主要内容,如果未能解决你的问题,请参考以下文章

使用 OAuth 和 Node.JS 对 JIRA REST API 进行身份验证

JIRA连接 fisheye提示无法连接 fisheye 因为那个服务器缺少一个交互应用程序链接

jira python oauth:如何获取认证参数?

jira python oauth:如何获取认证参数?

在 .NET 中使用 OAuth2.0 2-legged 方法访问 Jira API

Confluence 6 workbox 包含从 Jira 来的通知