Rest Client是否支持NTLM Auth?

时间:2010-11-08 23:02:17

标签: ruby web-services rest ntlm rest-client

Rest Client可以进行NTLM身份验证吗?

我在认证类型的文档中没有看到任何选项:

require 'rest_client'

resource = RestClient::Resource.new 'http://website', :auth_type => 'ntlm', :user => 'USERNAME', :password => 'PASSWORD'
results = resource.get

:auth_type => 'ntlm'不起作用,我在文档或IRC会议室也找不到任何内容。

2 个答案:

答案 0 :(得分:2)

NTLM要求确实缩小了您可以使用的HTTP软件,因为它对Microsoft来说非常具体。

您可能需要查看“NTLM Authentication for Ruby with Typhoeus and Curl”,然后使用Typhoeus代替rest-client。

答案 1 :(得分:0)

从技术上讲,您可以使用before_execution_proc arg做到这一点,它使您可以访问内部Net :: HTTP请求对象。如果您使用的是ruby-ntlm gem,它将为Net :: HTTP请求添加一个ntlm_auth方法。

require 'ntlm/http'
require 'rest-client'
require 'json'

# Quick monkey patch to rest client payloads since for some reason Net/NTLM insists on playing payload streams backwards.
class RestClient::Payload::Base
  def rewind
    @stream.rewind
  end
end

auth_proc = ->(req, _args){ req.ntlm_auth(username, domain, password)}
res = RestClient::Request.new(method: :post, url: url, payload: payload}, before_execution_proc: auth_proc ).execute
res