Rest客户端支持NTLM身份验证吗?

3

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个回答

2

谢谢,我可能最终会使用:https://github.com/maccman/nestful 或者只是curl。相信我,如果不必要,我不想使用NTLM :) - nictrix
Greg,听起来很有趣啊......这是给你的链接:http://scottw.com/accessing-restful-service-ruby-via - 能够满足我所需的一切,幸运的是我不需要经常访问 NTLM 后面的 RestAPI。 - nictrix
@nictrix - 你的链接好像有问题。这个链接可以用:http://dev.scottw.com/accessing-restful-service-ruby-via - Roy Tinker

0
从技术上讲,您可以使用before_execution_proc参数来实现此操作,该参数允许您访问内部的Net::HTTP请求对象。如果您正在使用ruby-ntlm gem,则会将一个ntlm_auth方法添加到Net::HTTP请求中。
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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接