rack-auth-ldap 1.2 → 1.2.2
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.
- checksums.yaml +4 -4
- data/.debride-whitelist +2 -0
- data/.rubocop.yml +131 -0
- data/Gemfile +2 -2
- data/README.rdoc +2 -2
- data/Rakefile +40 -40
- data/VERSION +1 -0
- data/bom.xml +657 -0
- data/examples/Gemfile +2 -2
- data/examples/config.ru +0 -1
- data/examples/sinatra_example.rb +1 -4
- data/lib/rack/auth/ldap/version.rb +3 -5
- data/lib/rack/auth/ldap.rb +36 -49
- data/rack-auth-ldap.gemspec +19 -19
- data/spec/rack-auth-ldap_spec.rb +21 -24
- metadata +77 -30
- /data/{COPYRIGHT → LICENSE.txt} +0 -0
@@ -1,13 +1,11 @@
|
|
1
|
-
# coding: utf-8
|
2
1
|
# Author : Romain GEORGES
|
3
|
-
|
2
|
+
require 'version'
|
4
3
|
# the Rack module from Rack Sources
|
5
4
|
module Rack
|
6
|
-
|
7
|
-
# the Rack::Auth module from Rack Sources
|
5
|
+
# the Rack::Auth module from Rack Sources
|
8
6
|
module Auth
|
9
7
|
# the current version for Rack::Auth::Ldap => gem rack-auth-ldap
|
10
8
|
# used by gemspec
|
11
|
-
LDAP_VERSION =
|
9
|
+
LDAP_VERSION = Version.current
|
12
10
|
end
|
13
11
|
end
|
data/lib/rack/auth/ldap.rb
CHANGED
@@ -1,6 +1,4 @@
|
|
1
|
-
#
|
2
|
-
|
3
|
-
#inhibit warning : due to net-ldap warning on Socket.tcp
|
1
|
+
# inhibit warning : due to net-ldap warning on Socket.tcp
|
4
2
|
$-w = nil
|
5
3
|
|
6
4
|
require 'rack'
|
@@ -11,66 +9,62 @@ require 'yaml'
|
|
11
9
|
|
12
10
|
# the rack module from Rack Sources
|
13
11
|
module Rack
|
14
|
-
|
15
12
|
# the auth module from Rack Sources
|
16
13
|
module Auth
|
17
|
-
|
18
14
|
# class Config provide Yaml config mapping for Rack::Auth::Module
|
19
15
|
# the class map ldap configurations values
|
20
16
|
# @note this class is not provide to be used standalone
|
21
17
|
class Config
|
22
|
-
|
23
18
|
# initializer for Config class
|
24
19
|
# @param [Hash<Symbol>] options initialisation options
|
25
20
|
# @option options [Symbol] :file The YAML filename (default to ./ldap.yml, the config.ru path)
|
26
21
|
# @return [Config] object himself
|
27
|
-
def initialize(options = { :
|
22
|
+
def initialize(options = { file: './ldap.yml' })
|
28
23
|
@values = defaults
|
29
|
-
|
24
|
+
options.merge!(file: './ldap.yml') { |_key, oldval, _newval| oldval }
|
25
|
+
target = ENV['RACK_ENV'] || 'test'
|
30
26
|
config_values = load_yaml(::File.expand_path(options[:file], Dir.pwd))[target]
|
31
|
-
debug = ::File.open(
|
32
|
-
debug.puts ENV
|
27
|
+
debug = ::File.open('/tmp/test.txt', 'a+')
|
28
|
+
debug.puts ENV.fetch('RACK_ENV', nil)
|
33
29
|
debug.close
|
34
30
|
config_values.keys.each do |key|
|
35
31
|
config_values[key.to_sym] = config_values.delete(key)
|
36
32
|
end
|
37
33
|
@values.merge! config_values
|
38
34
|
@values.keys.each do |meth|
|
39
|
-
bloc =
|
40
|
-
|
35
|
+
bloc = proc { @values[meth] }
|
36
|
+
self.class.send :define_method, meth, &bloc
|
41
37
|
end
|
42
38
|
end
|
43
39
|
|
44
40
|
private
|
45
41
|
|
46
42
|
def load_yaml(file)
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
raise "Could not load ldap configuration. No such file - #{file}"
|
51
|
-
end
|
43
|
+
raise "Could not load ldap configuration. No such file - #{file}" unless ::File.exist?(file)
|
44
|
+
|
45
|
+
::YAML.load ::ERB.new(IO.read(file)).result
|
52
46
|
rescue ::Psych::SyntaxError => e
|
53
47
|
raise "YAML syntax error occurred while parsing #{file}. " \
|
54
|
-
|
48
|
+
'Please note that YAML must be consistently indented using spaces. Tabs are not allowed. ' \
|
55
49
|
"Error: #{e.message}"
|
56
50
|
end
|
57
51
|
|
58
52
|
# private method with default configuration values for LDAP
|
59
53
|
# @return [Hash<Symbol>] the default values of LDAP configuration
|
60
54
|
def defaults
|
61
|
-
|
62
|
-
:
|
63
|
-
:
|
64
|
-
:
|
65
|
-
:
|
66
|
-
:
|
67
|
-
:
|
68
|
-
:
|
69
|
-
:
|
70
|
-
:
|
71
|
-
:
|
72
|
-
:
|
73
|
-
:
|
55
|
+
{
|
56
|
+
hostname: 'localhost',
|
57
|
+
basedn: 'dc=domain,dc=tld',
|
58
|
+
rootdn: '',
|
59
|
+
passdn: '',
|
60
|
+
auth: false,
|
61
|
+
port: 389,
|
62
|
+
scope: :subtree,
|
63
|
+
username_ldap_attribute: 'uid',
|
64
|
+
ldaps: false,
|
65
|
+
starttls: false,
|
66
|
+
tls_options: nil,
|
67
|
+
debug: false
|
74
68
|
}
|
75
69
|
end
|
76
70
|
end
|
@@ -84,7 +78,6 @@ module Rack
|
|
84
78
|
# require 'rack/auth/ldap'
|
85
79
|
# use Rack::Auth::Ldap
|
86
80
|
class Ldap < AbstractHandler
|
87
|
-
|
88
81
|
# the config read accessor
|
89
82
|
# @attr [Rack::Auth::Config] the read accessor to the LDAP Config object
|
90
83
|
attr_reader :config
|
@@ -108,6 +101,7 @@ module Rack
|
|
108
101
|
auth = Ldap::Request.new(env)
|
109
102
|
return unauthorized unless auth.provided?
|
110
103
|
return bad_request unless auth.basic?
|
104
|
+
|
111
105
|
if valid?(auth)
|
112
106
|
env['REMOTE_USER'] = auth.username
|
113
107
|
return @app.call(env)
|
@@ -115,7 +109,6 @@ module Rack
|
|
115
109
|
unauthorized
|
116
110
|
end
|
117
111
|
|
118
|
-
|
119
112
|
private
|
120
113
|
|
121
114
|
# forge a challange header for HTTP basic auth with the realm attribut
|
@@ -130,16 +123,16 @@ module Rack
|
|
130
123
|
def valid?(auth)
|
131
124
|
# how to connect to the ldap server: ldap, ldaps, ldap + starttls
|
132
125
|
if @config.ldaps
|
133
|
-
enc = { :
|
126
|
+
enc = { method: :simple_tls }
|
134
127
|
elsif @config.starttls
|
135
|
-
enc =
|
128
|
+
enc = { method: :start_tls }
|
136
129
|
enc[:tls_options] = @config.tls_options if @config.tls_options
|
137
130
|
else
|
138
|
-
enc = nil
|
131
|
+
enc = nil # just straight ldap
|
139
132
|
end
|
140
|
-
conn = Net::LDAP.new(
|
141
|
-
|
142
|
-
|
133
|
+
conn = Net::LDAP.new(host: @config.hostname, port: @config.port,
|
134
|
+
base: @config.basedn,
|
135
|
+
encryption: enc)
|
143
136
|
|
144
137
|
$stdout.puts "Net::LDAP.new => #{conn.inspect}" if @config.debug
|
145
138
|
|
@@ -156,30 +149,26 @@ module Rack
|
|
156
149
|
$stdout.puts "Net::LDAP::Filter.eq => #{filter.inspect}" if @config.debug
|
157
150
|
|
158
151
|
# find the user and rebind as them to test the password
|
159
|
-
#return conn.bind_as(:filter => filter, :password => auth.password)
|
152
|
+
# return conn.bind_as(:filter => filter, :password => auth.password)
|
160
153
|
$stdout.puts "doing bind_as password.size: #{auth.password.size}..." if @config.debug
|
161
|
-
ret = conn.bind_as(:
|
154
|
+
ret = conn.bind_as(filter: filter, password: auth.password)
|
162
155
|
$stdout.puts "bind_as => #{ret.inspect}" if @config.debug
|
163
156
|
ret
|
164
157
|
end
|
165
158
|
|
166
|
-
private
|
167
|
-
|
168
|
-
|
169
159
|
# Request class the LDAP credentials authenticator
|
170
160
|
# @note please do not instantiate manually, used by Rack::Auth:Ldap
|
171
161
|
class Request < Auth::AbstractRequest
|
172
|
-
|
173
162
|
# return true if the auth scheme provide is really a basic scheme
|
174
163
|
# @return [FalseClass,TrueClass] the result
|
175
164
|
def basic?
|
176
|
-
!parts.first.nil? &&
|
165
|
+
!parts.first.nil? && 'basic' == scheme
|
177
166
|
end
|
178
167
|
|
179
168
|
# return an array of the two credentials [username,password]
|
180
169
|
# @return [Array] the couple [username,password]
|
181
170
|
def credentials
|
182
|
-
@credentials ||= params.
|
171
|
+
@credentials ||= params.unpack1('m*').split(':', 2)
|
183
172
|
end
|
184
173
|
|
185
174
|
# read accessor on the first credentials, username
|
@@ -193,9 +182,7 @@ module Rack
|
|
193
182
|
def password
|
194
183
|
credentials.last
|
195
184
|
end
|
196
|
-
|
197
185
|
end
|
198
|
-
|
199
186
|
end
|
200
187
|
end
|
201
188
|
end
|
data/rack-auth-ldap.gemspec
CHANGED
@@ -1,32 +1,32 @@
|
|
1
|
-
lib = File.expand_path('
|
1
|
+
lib = File.expand_path('lib', __dir__)
|
2
2
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
3
3
|
require 'rack/auth/ldap/version'
|
4
4
|
|
5
|
-
|
6
5
|
Gem::Specification.new do |s|
|
7
|
-
s.name =
|
8
|
-
s.summary = %
|
9
|
-
s.email =
|
10
|
-
s.homepage =
|
11
|
-
s.authors = [
|
6
|
+
s.name = 'rack-auth-ldap'
|
7
|
+
s.summary = %(Rack middleware providing LDAP authentication)
|
8
|
+
s.email = 'romain@ultragreen.net'
|
9
|
+
s.homepage = 'http://www.github.com/lecid/rack-auth-ldap'
|
10
|
+
s.authors = ['Romain GEORGES']
|
12
11
|
s.version = Rack::Auth::LDAP_VERSION
|
13
12
|
|
14
|
-
|
15
|
-
s.
|
16
|
-
s.add_development_dependency 'rspec', '~> 3.9.0'
|
17
|
-
s.add_development_dependency 'yard', '~> 0.9.24'
|
18
|
-
s.add_development_dependency 'rdoc', '~> 6.2.1'
|
19
|
-
s.add_development_dependency 'roodi', '~> 5.0.0'
|
13
|
+
s.description = 'rack-auth-ldap : provide LDAP authentication for Rack middelware'
|
14
|
+
s.add_development_dependency 'bundle-audit', '~> 0.1.0'
|
20
15
|
s.add_development_dependency 'code_statistics', '~> 0.2.13'
|
21
|
-
s.add_development_dependency 'yard-rspec', '~> 0.1'
|
22
16
|
s.add_development_dependency 'ladle', '~> 1.0.1'
|
23
17
|
s.add_development_dependency 'rake', '~> 13.0.1'
|
18
|
+
s.add_development_dependency 'rspec', '~> 3.12.0'
|
19
|
+
s.add_development_dependency 'rubocop', '~> 1.54'
|
20
|
+
s.add_development_dependency 'version', '~> 1.1'
|
21
|
+
s.add_development_dependency 'yard', '~> 0.9.24'
|
22
|
+
s.add_development_dependency 'yard-rspec', '~> 0.1'
|
24
23
|
|
24
|
+
s.add_development_dependency 'cyclonedx-ruby', '~> 1.1'
|
25
|
+
s.add_development_dependency 'debride', '~> 1.12'
|
25
26
|
|
26
|
-
|
27
|
-
|
28
|
-
s.
|
29
|
-
s.add_dependency 'rack', '~> 2.2.2'
|
30
|
-
s.license = "BSD-2-Clause"
|
27
|
+
s.add_dependency 'net-ldap', '~> 0.18'
|
28
|
+
s.add_dependency 'rack', '~> 3.0'
|
29
|
+
s.license = 'BSD-2-Clause'
|
31
30
|
s.files = `git ls-files`.split($/)
|
31
|
+
s.metadata['rubygems_mfa_required'] = 'true'
|
32
32
|
end
|
data/spec/rack-auth-ldap_spec.rb
CHANGED
@@ -1,24 +1,21 @@
|
|
1
|
-
# coding: utf-8
|
2
1
|
require 'ladle'
|
3
2
|
require 'rack/auth/ldap'
|
4
3
|
require 'rack/lint'
|
5
4
|
require 'rack/mock'
|
6
5
|
|
7
6
|
describe Rack::Auth::Ldap do
|
7
|
+
before :all do
|
8
|
+
@ldap_server = Ladle::Server.new({
|
9
|
+
quiet: true, port: 3897,
|
10
|
+
ldif: './spec/config/users.ldif',
|
11
|
+
domain: 'dc=test',
|
12
|
+
tmpdir: '/tmp'
|
13
|
+
}).start
|
14
|
+
end
|
8
15
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
:ldif => "./spec/config/users.ldif",
|
13
|
-
:domain => "dc=test",
|
14
|
-
:tmpdir => '/tmp'
|
15
|
-
}).start
|
16
|
-
end
|
17
|
-
|
18
|
-
after :all do
|
19
|
-
@ldap_server.stop if @ldap_server
|
20
|
-
end
|
21
|
-
|
16
|
+
after :all do
|
17
|
+
@ldap_server.stop if @ldap_server
|
18
|
+
end
|
22
19
|
|
23
20
|
def realm
|
24
21
|
'test'
|
@@ -26,12 +23,12 @@ describe Rack::Auth::Ldap do
|
|
26
23
|
|
27
24
|
def unprotected_app
|
28
25
|
Rack::Lint.new lambda { |env|
|
29
|
-
[
|
26
|
+
[200, { 'content-type' => 'text/plain' }, ["Hi #{env['REMOTE_USER']}"]]
|
30
27
|
}
|
31
28
|
end
|
32
29
|
|
33
30
|
def protected_app
|
34
|
-
app = Rack::Auth::Ldap.new(unprotected_app,{:
|
31
|
+
app = Rack::Auth::Ldap.new(unprotected_app, { file: './spec/config/ldap.yml' })
|
35
32
|
app.realm = realm
|
36
33
|
app
|
37
34
|
end
|
@@ -41,7 +38,7 @@ describe Rack::Auth::Ldap do
|
|
41
38
|
end
|
42
39
|
|
43
40
|
def request_with_basic_auth(username, password, &block)
|
44
|
-
request 'HTTP_AUTHORIZATION' => 'Basic ' + ["#{username}:#{password}"].pack(
|
41
|
+
request 'HTTP_AUTHORIZATION' => 'Basic ' + ["#{username}:#{password}"].pack('m*'), &block
|
45
42
|
end
|
46
43
|
|
47
44
|
def request(headers = {})
|
@@ -52,18 +49,18 @@ describe Rack::Auth::Ldap do
|
|
52
49
|
expect(response.client_error?).to be true
|
53
50
|
expect(response.status).to eq 401
|
54
51
|
expect(response).to include 'WWW-Authenticate'
|
55
|
-
expect(response.headers['WWW-Authenticate']).to match
|
52
|
+
expect(response.headers['WWW-Authenticate']).to match(/Basic realm="#{Regexp.escape(realm)}"/)
|
56
53
|
expect(response.body).to be_empty
|
57
54
|
end
|
58
55
|
|
59
56
|
it 'should render ldap.yaml with erb and use env vars' do
|
60
|
-
|
61
|
-
|
62
|
-
|
57
|
+
allow(ENV).to receive(:[]).with('RACK_ENV')
|
58
|
+
allow(ENV).to receive(:[]).with('HOSTNAME').and_return('localhost.local')
|
59
|
+
allow(ENV).to receive(:[]).with('PORT').and_return('9090')
|
63
60
|
|
64
|
-
|
65
|
-
|
66
|
-
|
61
|
+
app = Rack::Auth::Ldap.new(unprotected_app, { file: './spec/config/ldap.yml' })
|
62
|
+
expect(app.config.hostname).to eq('localhost.local')
|
63
|
+
expect(app.config.port).to eq(9090)
|
67
64
|
end
|
68
65
|
|
69
66
|
it 'should challenge correctly when no credentials are specified' do
|
metadata
CHANGED
@@ -1,85 +1,127 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rack-auth-ldap
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 1.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Romain GEORGES
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-07-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: bundle-audit
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 0.1.0
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
26
|
+
version: 0.1.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: code_statistics
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 0.
|
33
|
+
version: 0.2.13
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 0.
|
40
|
+
version: 0.2.13
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: ladle
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
47
|
+
version: 1.0.1
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
54
|
+
version: 1.0.1
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
56
|
+
name: rake
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
61
|
+
version: 13.0.1
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
68
|
+
version: 13.0.1
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
70
|
+
name: rspec
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
73
|
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version:
|
75
|
+
version: 3.12.0
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
80
|
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version:
|
82
|
+
version: 3.12.0
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: rubocop
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '1.54'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '1.54'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: version
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - "~>"
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '1.1'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - "~>"
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '1.1'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: yard
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - "~>"
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: 0.9.24
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - "~>"
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: 0.9.24
|
83
125
|
- !ruby/object:Gem::Dependency
|
84
126
|
name: yard-rspec
|
85
127
|
requirement: !ruby/object:Gem::Requirement
|
@@ -95,72 +137,76 @@ dependencies:
|
|
95
137
|
- !ruby/object:Gem::Version
|
96
138
|
version: '0.1'
|
97
139
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
140
|
+
name: cyclonedx-ruby
|
99
141
|
requirement: !ruby/object:Gem::Requirement
|
100
142
|
requirements:
|
101
143
|
- - "~>"
|
102
144
|
- !ruby/object:Gem::Version
|
103
|
-
version: 1.
|
145
|
+
version: '1.1'
|
104
146
|
type: :development
|
105
147
|
prerelease: false
|
106
148
|
version_requirements: !ruby/object:Gem::Requirement
|
107
149
|
requirements:
|
108
150
|
- - "~>"
|
109
151
|
- !ruby/object:Gem::Version
|
110
|
-
version: 1.
|
152
|
+
version: '1.1'
|
111
153
|
- !ruby/object:Gem::Dependency
|
112
|
-
name:
|
154
|
+
name: debride
|
113
155
|
requirement: !ruby/object:Gem::Requirement
|
114
156
|
requirements:
|
115
157
|
- - "~>"
|
116
158
|
- !ruby/object:Gem::Version
|
117
|
-
version:
|
159
|
+
version: '1.12'
|
118
160
|
type: :development
|
119
161
|
prerelease: false
|
120
162
|
version_requirements: !ruby/object:Gem::Requirement
|
121
163
|
requirements:
|
122
164
|
- - "~>"
|
123
165
|
- !ruby/object:Gem::Version
|
124
|
-
version:
|
166
|
+
version: '1.12'
|
125
167
|
- !ruby/object:Gem::Dependency
|
126
168
|
name: net-ldap
|
127
169
|
requirement: !ruby/object:Gem::Requirement
|
128
170
|
requirements:
|
129
171
|
- - "~>"
|
130
172
|
- !ruby/object:Gem::Version
|
131
|
-
version: 0.
|
173
|
+
version: '0.18'
|
132
174
|
type: :runtime
|
133
175
|
prerelease: false
|
134
176
|
version_requirements: !ruby/object:Gem::Requirement
|
135
177
|
requirements:
|
136
178
|
- - "~>"
|
137
179
|
- !ruby/object:Gem::Version
|
138
|
-
version: 0.
|
180
|
+
version: '0.18'
|
139
181
|
- !ruby/object:Gem::Dependency
|
140
182
|
name: rack
|
141
183
|
requirement: !ruby/object:Gem::Requirement
|
142
184
|
requirements:
|
143
185
|
- - "~>"
|
144
186
|
- !ruby/object:Gem::Version
|
145
|
-
version:
|
187
|
+
version: '3.0'
|
146
188
|
type: :runtime
|
147
189
|
prerelease: false
|
148
190
|
version_requirements: !ruby/object:Gem::Requirement
|
149
191
|
requirements:
|
150
192
|
- - "~>"
|
151
193
|
- !ruby/object:Gem::Version
|
152
|
-
version:
|
194
|
+
version: '3.0'
|
153
195
|
description: 'rack-auth-ldap : provide LDAP authentication for Rack middelware'
|
154
196
|
email: romain@ultragreen.net
|
155
197
|
executables: []
|
156
198
|
extensions: []
|
157
199
|
extra_rdoc_files: []
|
158
200
|
files:
|
201
|
+
- ".debride-whitelist"
|
159
202
|
- ".gitignore"
|
160
|
-
-
|
203
|
+
- ".rubocop.yml"
|
161
204
|
- Gemfile
|
205
|
+
- LICENSE.txt
|
162
206
|
- README.rdoc
|
163
207
|
- Rakefile
|
208
|
+
- VERSION
|
209
|
+
- bom.xml
|
164
210
|
- examples/Gemfile
|
165
211
|
- examples/config.ru
|
166
212
|
- examples/ldap.yml
|
@@ -174,7 +220,8 @@ files:
|
|
174
220
|
homepage: http://www.github.com/lecid/rack-auth-ldap
|
175
221
|
licenses:
|
176
222
|
- BSD-2-Clause
|
177
|
-
metadata:
|
223
|
+
metadata:
|
224
|
+
rubygems_mfa_required: 'true'
|
178
225
|
post_install_message:
|
179
226
|
rdoc_options: []
|
180
227
|
require_paths:
|
@@ -190,7 +237,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
190
237
|
- !ruby/object:Gem::Version
|
191
238
|
version: '0'
|
192
239
|
requirements: []
|
193
|
-
rubygems_version: 3.
|
240
|
+
rubygems_version: 3.3.5
|
194
241
|
signing_key:
|
195
242
|
specification_version: 4
|
196
243
|
summary: Rack middleware providing LDAP authentication
|
/data/{COPYRIGHT → LICENSE.txt}
RENAMED
File without changes
|