我想练习制作一个 exchange server 的 ews 二次开发。
现在卡在了身份信息验证的位置了。
我使用的是 rubyntlm 扩展,但是在 type3 的时候会出现问题,无法正确生成 type3 的内容。 求教一下是为什么,我应该怎么修改? 谢谢诸位大佬了。
代码如下:
require 'rubyntlm'
require 'net/http'
require 'net/https'
require 'uri'
url = URI('https://192.168.2.176/ews/exchange.asmx')
#OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE
domain = 'exchange.local'
$user = 'test'
$pass = '123456'
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
t1 = Net::NTLM::Message::Type1.new()
header = {"Authorization":"NTLM "+ t1.encode64, "Accept": "text/xml"}
body = ''' <xml>'''
response = http.post(url, body, header)
response.header.each do |k,v|
if /(NTLM|Negotiate)(.+)(,|\r\n)/ =~ v
$msg = $2
end
end
puts $msg #到这里都正常
t2 = Net::NTLM::Message.decode64($msg)
t3 = t2.response({:user => 'test', :password => 'P@ssw0rd'}, {:ntlmv2 => true})
header2 = {"Authorization":"NTLM "+ t3.encode64}
puts header2.to_s #这个生成结果就有问题了,长度就不对
response = http.post(url, body, header2)
puts response.code #返回值400,正常的话应该是200
求各位大佬指点迷津。 顺便我还想问下,为什么
header = {"Authorization":"NTLM "+ t1.encode64, "Accept": "text/xml"}
这个地方再增加其他内容也会报错呀。
新手小白,排版不好请见谅,谢谢大佬们了。