ruby-on-rails - 使用 oauth-plugin 在 Rails 中使用 Jira 2L0 的 oauth 中出现 401 未经授权错误

标签 ruby-on-rails oauth jira 2-legged

我正在尝试使用双向身份验证连接 OAuth 使用者。我有两个问题:

1) 是否可以将 Oauth 与自定义 REST 插件一起使用(而不是内置 API)

2) 作为内置 REST API 的测试,我正在尝试以下操作,并收到:

<Net::HTTPUnauthorized 401 Unauthorized readbody=true>
{"errorMessages":["You do not have the permission to see the specified issue","Login Required"],"errors":{}}

测试方法如下:

jira_url = "http://localhost:2990/jira"

consumer_key = "hardcoded-consumer"
consumer_secret = OpenSSL::PKey::RSA.new(IO.read(File.dirname(__FILE__) + "/../rsakey.pem"))

@consumer ||= OAuth::Consumer.new(consumer_key, consumer_secret, {
    :site => 'http://localhost:2990',
    :context_path       => '/jira',
    :signature_method   => 'RSA-SHA1',
    :auth_type          => :oauth,
    :scheme => :header,
    :oauth_callback => false,
    :ssl_verify_mode    => OpenSSL::SSL::VERIFY_PEER,
    :use_ssl            => true,
    :http_method => :post,
    :request_token_path => jira_url + '/plugins/servlet/oauth/request-token',
    :access_token_path  => jira_url + '/plugins/servlet/oauth/access-token',
    :authorize_path     => jira_url + '/plugins/servlet/oauth/authorize'
})

testurl = jira_url + "/rest/api/latest/issue/SPI-1"

puts "1 #################################### first method"
req = @consumer.create_signed_request(:get, testurl, nil)
res = Net::HTTP.start('localhost', '2990') { |http| http.request(req) }
puts res.inspect
puts res.body

puts "2 #################################### second method"
@acc_tok = OAuth::AccessToken.new @consumer
resp = @acc_tok.get(testurl)
puts @acc_tok.inspect
puts resp.inspect
puts resp.body

两种方法输出相同的错误。

谁能告诉我我做错了什么?

最佳答案

答案 1。OAuth是一个授权框架,REST是一种无状态、客户端-服务器、可缓存的通信协议(protocol)。所以是的,您可以使用 OAuth 通过您的自定义 REST 插件进行身份验证。

答案 2。您可以尝试不使用 SSL 或使用 :ssl_verify_mode => OpenSSL::SSL::VERIFY_NONE 如果它有效,那么问题出在您的 SSL 连接上。或者,您可以尝试基本身份验证:

{
     :username => "*Your JIRA username*",
     :password => "*Your JIRA password*",
     :site     => 'http://localhost:2990/',
     :context_path => 'jira',
     :auth_type => :basic,
     :use_ssl => true,
     :signature_method   => 'RSA-SHA1',
     :ssl_verify_mode    => OpenSSL::SSL::VERIFY_NONE
}

我找到了 this gem非常有用。

关于ruby-on-rails - 使用 oauth-plugin 在 Rails 中使用 Jira 2L0 的 oauth 中出现 401 未经授权错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13590946/

相关文章:

ruby-on-rails - 一个 Rails 应用程序,两个域,每个域不同的 session

ruby-on-rails - Rails迁移错误

api - RESTful API : how to securely store bearer API tokens?

c# - 可以使用反射来实例化对象基类属性吗?

mysql - 无法添加或更新子行 : a foreign key constraint fails - Ruby on Rails

jquery - Rails 使用 Jquery AJAX 销毁确认

oauth - 什么是正确的 OAuth 百分比编码?

Android 休息客户端到 magento

mysql - Jira:连接数据库时出错

php - 通过 REST API 将多个观察者添加到 JIRA 问题