rack-ntlm-test-service 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,5 @@
1
+ .DS_Store
2
+ *.gem
3
+ .bundle
4
+ Gemfile.lock
5
+ pkg/*
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source "http://rubygems.org"
2
+
3
+ gemspec
@@ -0,0 +1,28 @@
1
+ # rack-ntlm-test-service
2
+
3
+ Test that your HTTP client supports NTLM authentication.
4
+
5
+ ## Usage
6
+
7
+ Rack middleware: <pre>Rack::Ntlm</pre>
8
+
9
+ Arguments:
10
+
11
+ <pre>
12
+ {
13
+ :uri_pattern => /\/login/,
14
+ :auth => {
15
+ :username => 'user',
16
+ :password => 'secret'
17
+ }
18
+ }
19
+ </pre>
20
+
21
+
22
+ # Credit to dtsato and lukefx for the original rack-ntlm gem on which this is based.
23
+
24
+ <h1>Temporary word of caution</h1>
25
+
26
+ <p>until my changes have been merged and pushed, you need to use the 'rubyntlm' gem from my github.</p>
27
+
28
+ <a href="https://github.com/johncant/rubyntlm">https://github.com/johncant/rubyntlm</a>
@@ -0,0 +1,3 @@
1
+ require 'bundler'
2
+ Bundler::GemHelper.install_tasks
3
+
@@ -0,0 +1 @@
1
+ require 'rack-ntlm/ntlm'
@@ -0,0 +1,53 @@
1
+ require 'net/ntlm'
2
+
3
+ module Rack
4
+ class Ntlm
5
+
6
+ def initialize(app, config = {})
7
+ @app = app
8
+ @config = config
9
+ end
10
+
11
+ def auth(username)
12
+ # Ignore the password. We should probably do something about this
13
+ begin
14
+ if @config[:auth]
15
+ username == @config[:auth][:username]
16
+ else
17
+ true
18
+ end
19
+ rescue => e
20
+ false
21
+ end
22
+ end
23
+
24
+ def call(env)
25
+ if env['PATH_INFO'] =~ @config[:uri_pattern] && (env['HTTP_AUTHORIZATION'].nil? || env['HTTP_AUTHORIZATION'] == "")
26
+ return [401, {'WWW-Authenticate' => "NTLM"}, []]
27
+ end
28
+
29
+ if /^(NTLM|Negotiate) (.+)/ =~ env["HTTP_AUTHORIZATION"]
30
+
31
+ message = Net::NTLM::Message.decode64($2)
32
+
33
+ if message.type == 1
34
+ type2 = Net::NTLM::Message::Type2.new
35
+ return [401, {"WWW-Authenticate" => "NTLM " + type2.encode64}, []]
36
+ end
37
+
38
+ if message.type == 3 && env['PATH_INFO'] =~ @config[:uri_pattern]
39
+ user = Net::NTLM::decode_utf16le(message.user)
40
+ if auth(user)
41
+ env['REMOTE_USER'] = user
42
+ else
43
+ return [401, {}, ["You are not authorized to see this page"]]
44
+ end
45
+ end
46
+ end
47
+
48
+ @app.call(env)
49
+ end
50
+
51
+ end
52
+
53
+ end
@@ -0,0 +1,5 @@
1
+ module Rack
2
+ class Ntlm
3
+ VERSION = "0.0.1"
4
+ end
5
+ end
@@ -0,0 +1,24 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "rack-ntlm/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "rack-ntlm-test-service"
7
+ s.version = Rack::Ntlm::VERSION
8
+ s.platform = Gem::Platform::RUBY
9
+ s.authors = ["Luca Simone", "John Cant"]
10
+ s.email = ["info@lucasimone.info"]
11
+ s.homepage = "https://github.com/johncant/rack-ntlm-test-service"
12
+ s.summary = %q{Rack module for testing NTLM Authentication in an HTTP client}
13
+ s.description = %q{a Rack module for testing NTLM Authentication in an HTTP client}
14
+
15
+ s.files = `git ls-files`.split("\n")
16
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
17
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
18
+ s.require_paths = ["lib"]
19
+
20
+ s.add_dependency "rubyntlm"
21
+
22
+ s.add_development_dependency "pry"
23
+
24
+ end
@@ -0,0 +1,8 @@
1
+ require 'test_helper'
2
+
3
+ class Rack-ntlmTest < ActiveSupport::TestCase
4
+ # Replace this with your real tests.
5
+ test "the truth" do
6
+ assert true
7
+ end
8
+ end
@@ -0,0 +1,3 @@
1
+ require 'rubygems'
2
+ require 'active_support'
3
+ require 'active_support/test_case'
metadata ADDED
@@ -0,0 +1,89 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rack-ntlm-test-service
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Luca Simone
9
+ - John Cant
10
+ autorequire:
11
+ bindir: bin
12
+ cert_chain: []
13
+ date: 2013-03-01 00:00:00.000000000 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: rubyntlm
17
+ requirement: !ruby/object:Gem::Requirement
18
+ none: false
19
+ requirements:
20
+ - - ! '>='
21
+ - !ruby/object:Gem::Version
22
+ version: '0'
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ none: false
27
+ requirements:
28
+ - - ! '>='
29
+ - !ruby/object:Gem::Version
30
+ version: '0'
31
+ - !ruby/object:Gem::Dependency
32
+ name: pry
33
+ requirement: !ruby/object:Gem::Requirement
34
+ none: false
35
+ requirements:
36
+ - - ! '>='
37
+ - !ruby/object:Gem::Version
38
+ version: '0'
39
+ type: :development
40
+ prerelease: false
41
+ version_requirements: !ruby/object:Gem::Requirement
42
+ none: false
43
+ requirements:
44
+ - - ! '>='
45
+ - !ruby/object:Gem::Version
46
+ version: '0'
47
+ description: a Rack module for testing NTLM Authentication in an HTTP client
48
+ email:
49
+ - info@lucasimone.info
50
+ executables: []
51
+ extensions: []
52
+ extra_rdoc_files: []
53
+ files:
54
+ - .gitignore
55
+ - Gemfile
56
+ - README.markdown
57
+ - Rakefile
58
+ - lib/rack-ntlm.rb
59
+ - lib/rack-ntlm/ntlm.rb
60
+ - lib/rack-ntlm/version.rb
61
+ - rack-ntlm.gemspec
62
+ - test/rack_ntlm_test.rb
63
+ - test/test_helper.rb
64
+ homepage: https://github.com/johncant/rack-ntlm-test-service
65
+ licenses: []
66
+ post_install_message:
67
+ rdoc_options: []
68
+ require_paths:
69
+ - lib
70
+ required_ruby_version: !ruby/object:Gem::Requirement
71
+ none: false
72
+ requirements:
73
+ - - ! '>='
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ required_rubygems_version: !ruby/object:Gem::Requirement
77
+ none: false
78
+ requirements:
79
+ - - ! '>='
80
+ - !ruby/object:Gem::Version
81
+ version: '0'
82
+ requirements: []
83
+ rubyforge_project:
84
+ rubygems_version: 1.8.24
85
+ signing_key:
86
+ specification_version: 3
87
+ summary: Rack module for testing NTLM Authentication in an HTTP client
88
+ test_files: []
89
+ has_rdoc: