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会议室也找不到任何内容。
答案 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