在 .NET 中使用 OAuth2.0 2-legged 方法访问 Jira API
Posted
技术标签:
【中文标题】在 .NET 中使用 OAuth2.0 2-legged 方法访问 Jira API【英文标题】:Access Jira API using OAuth2.0 2-legged approach in .NET 【发布时间】:2016-10-03 06:14:25 【问题描述】:如何为 JIRA Rest API 创建访问令牌?我有相关数据
用户密钥 私钥/公钥组合Jira 的 Rest API Oauth example 采用 3-legged 方法,并且非常不清楚要发送的实际参数是什么(我希望 Swagger 是更广泛使用的标准!)。
更详细地说,我有以下用例: 在 Web 表单 (ASPX) 门户应用程序中创建新员工时,我需要创建新的 JIRA 帐户并将其分配给项目(以及项目内的角色)。
因此,我想使用 OAuth2 2-legged 身份验证来完成此操作。我可能可以使用基本身份验证破解它,但我真的很想正确地做到这一点。
在尝试查找使用这种方法的代码示例时会出现问题。 .NET 示例确实很少,甚至其他语言的示例通常使用基本身份验证(每次调用时传输用户名和密码)或很少使用 3-legged 方法。
我找到了AnotherJiraRestClient,但查看它使用 RestClient nuget(这很好)但使用 HttpBasicAuthenticator(这很糟糕)的代码。
我浏览了所有提供的身份验证器,OAuth2AuthorizationRequestHeaderAuthenticator 看起来很有希望,但它要求我已经拥有访问令牌。所以这就是为什么最后的问题是“如何使用 2-legged 方法创建访问令牌?”
我已经使用以下设置在 JIRA 端创建了应用程序链接:
应用程序类型:通用应用程序 传出身份验证:(在 Jira 方面给出 500 服务器错误...但我不使用它,因此认为这并不重要) 传入身份验证:OAuth 状态:已配置 消费者密钥:TEST_JIRA_KEY 公钥:...(生成的在线私钥/公钥组合)【问题讨论】:
您找到解决方案了吗?尝试做类似的事情,但有点卡住了和你一样的问题 @Vilius 抱歉,但没有...我只是使用基本身份验证...没有时间花更多的时间。 【参考方案1】: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上的问题是最好的交流方式。
【讨论】:
您是否删除了 OAuth 支持?上面的测试链接失效了,文档只显示了基本的身份验证。 我重构了一些代码,结果在这里:github.com/dapplo/Dapplo.Jira/blob/master/src/Dapplo.Jira.Tests/…以上是关于在 .NET 中使用 OAuth2.0 2-legged 方法访问 Jira API的主要内容,如果未能解决你的问题,请参考以下文章
.NET - 如何使用 OAuth2.0 和 Windows 服务的离线访问将视频上传到 YouTube
2021-06-27 .NET高级班 71-ASP.NET Core Identityserver4(OAuth2.0模式)