Forum: Ruby ntlm example

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
sean nakasone (Guest)
on 2007-03-10 03:35
(Received via mailing list)
Can someone please provide me with a simple ntlm example?

Basically, I just want to make an HTTP GET request to my web site, but
it
does not work because it requires NTLM authentication.  Here's what I'm
doing, but I need NTLM incorporated.

require 'socket'
client = TCPSocket.open('amfmweb', 80)
client.send("GET /gviewer HTTP/1.0\n\n", 0)    # 0 means standard packet
client.shutdown( 1 )
response=client.readlines
puts response
client.close


thanks,
Sean.
Kohei Kajimoto (Guest)
on 2007-03-13 02:32
(Received via mailing list)
On 3/9/07, sean nakasone <removed_email_address@domain.invalid> wrote:
> Can someone please provide me with a simple ntlm example?

The following chunk of code works in my environment: IIS 6.0, ruby
1.8.5 [i386-cygwin], and non-standard rubyntlm 0.1.1.

http://rubyforge.org/projects/rubyntlm/

----
require 'socket'
require 'net/ntlm'

$user = "koheik"
$passwd = "password"

$host = "www"
$port = 80

def header(s, host, msg)
   s.print "GET / HTTP/1.1\r\n"
   s.print "Host: #{host}\r\n"
   s.print "Authorization: NTLM " + msg + "\r\n"
   s.print "\r\n"
end

client = TCPSocket.new($host, $port)

# client -> server
t1 = Net::NTLM::Message::Type1.new()
header(client, $host, t1.encode64)

# server -> client
msg = ''
while(line = client.gets)
   if /^WWW-Authenticate: (NTLM|Negotiate) (.+)\r\n/ =~ line
      msg = $2
   end
   break if /^\r\n/ =~ line
end

if(msg)
   t2 = Net::NTLM::Message.decode64(msg)
   t3 = t2.response({:user => $user, :password => $passwd}, {:ntlmv2 =>
true})
   header(client, $host, t3.encode64)
end

client.shutdown(1)
response=client.readlines
puts response
client.close
----

Thanks,
Kohei
This topic is locked and can not be replied to.