使用.NET中的OAuth2.0双向方法访问Jira API

时间:2016-06-03 08:50:53

标签: c# asp.net authentication oauth jira-rest-api

如何为JIRA Rest API创建访问令牌?我有相关数据

  • 用户密钥
  • 私钥/公钥组合

Jira的Rest API Oauth example采用三条腿的方法,并且不清楚要发送的实际参数是什么(我希望Swagger是更广泛使用的标准!)。

更详细地说,我有以下用例: 在Web窗体(ASPX)门户应用程序中创建新员工时,我需要创建新的JIRA帐户并将其分配给项目(以及项目中的角色)。

因此我想使用OAuth2双方式身份验证来实现此目的。我可以使用基本身份验证来破解它,但我真的很想做到这一点。

尝试查找使用此方法的代码示例时出现问题。 .NET示例非常稀缺,甚至其他语言的示例通常使用基本身份验证(每次调用时传输的用户名和密码)或少数使用三脚法的。

我找到了AnotherJiraRestClient,但是看了它使用RestClient nuget的代码(这很好)但是使用了HttpBasicAuthenticator(这很糟糕)。

我浏览了所有提供的身份验证器,并且OAuth2AuthorizationRequestHeaderAuthenticator看起来很有希望,但它要求我已经拥有访问令牌。所以这就是为什么最后的问题是"如何使用两条腿的方法创建访问令牌?"

我已经使用此设置在JIRA的一侧创建了应用程序链接:

  • 申请类型:通用申请
  • 传出身份验证:(在Jira的一方提供500个服务器错误......但我认为这并不重要,因为我没有使用它)
  • 传入身份验证:OAuth
    • 状态:已配置
    • 消费者密钥:TEST_JIRA_KEY
    • 公钥:...(生成在线私钥/公钥组合)

1 个答案:

答案 0 :(得分:2)

Atlassian目前不支持OAuth 2.0,但仅支持1.0(a)。

有一项功能请求:https://jira.atlassian.com/browse/JRA-43171

我已经在C#,> = .NET 4.5和完全异步(具有代理支持)中创建了一个开源Jira客户端,该客户端可以在GitHub上以及作为NuGet包使用。请参阅:https://github.com/dapplo/Dapplo.Jira

今天我添加了OAuth 1.0a支持,我开始工作并使用此处的信息进行测试: https://bitbucket.org/atlassian_tutorial/atlassian-oauth-examples/src/d625161454d1?at=default 我使用该存储库中的公钥在我的Jira Cloud服务器上设置测试链接,并在我的测试用例中使用私钥。

测试代码在这里(它被注释掉了,因为OAuth进程打开了一个浏览器,这在测试服务器上是坏的) https://github.com/dapplo/Dapplo.Jira/blob/master/Dapplo.Jira.Tests/JiraOAuthTests.cs

我仍在寻找一种方法使证书/私钥读取更容易,但在某种程度上,这不是图书馆本身的工作......

如果有任何问题,我猜GitHub上的问题是沟通的最佳方式。