rack-auth-ldap 1.2.1 → 1.2.3
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/.github/workflows/main.yml +23 -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 -50
- data/rack-auth-ldap.gemspec +22 -23
- data/spec/rack-auth-ldap_spec.rb +21 -24
- metadata +64 -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,67 +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
|
-
options.merge!(:
|
30
|
-
target
|
24
|
+
options.merge!(file: './ldap.yml') { |_key, oldval, _newval| oldval }
|
25
|
+
target = ENV['RACK_ENV'] || 'test'
|
31
26
|
config_values = load_yaml(::File.expand_path(options[:file], Dir.pwd))[target]
|
32
|
-
debug = ::File.open(
|
33
|
-
debug.puts ENV
|
27
|
+
debug = ::File.open('/tmp/test.txt', 'a+')
|
28
|
+
debug.puts ENV.fetch('RACK_ENV', nil)
|
34
29
|
debug.close
|
35
30
|
config_values.keys.each do |key|
|
36
31
|
config_values[key.to_sym] = config_values.delete(key)
|
37
32
|
end
|
38
33
|
@values.merge! config_values
|
39
34
|
@values.keys.each do |meth|
|
40
|
-
bloc =
|
41
|
-
|
35
|
+
bloc = proc { @values[meth] }
|
36
|
+
self.class.send :define_method, meth, &bloc
|
42
37
|
end
|
43
38
|
end
|
44
39
|
|
45
40
|
private
|
46
41
|
|
47
42
|
def load_yaml(file)
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
raise "Could not load ldap configuration. No such file - #{file}"
|
52
|
-
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, aliases: true
|
53
46
|
rescue ::Psych::SyntaxError => e
|
54
47
|
raise "YAML syntax error occurred while parsing #{file}. " \
|
55
|
-
|
48
|
+
'Please note that YAML must be consistently indented using spaces. Tabs are not allowed. ' \
|
56
49
|
"Error: #{e.message}"
|
57
50
|
end
|
58
51
|
|
59
52
|
# private method with default configuration values for LDAP
|
60
53
|
# @return [Hash<Symbol>] the default values of LDAP configuration
|
61
54
|
def defaults
|
62
|
-
|
63
|
-
:
|
64
|
-
:
|
65
|
-
:
|
66
|
-
:
|
67
|
-
:
|
68
|
-
:
|
69
|
-
:
|
70
|
-
:
|
71
|
-
:
|
72
|
-
:
|
73
|
-
:
|
74
|
-
:
|
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
|
75
68
|
}
|
76
69
|
end
|
77
70
|
end
|
@@ -85,7 +78,6 @@ module Rack
|
|
85
78
|
# require 'rack/auth/ldap'
|
86
79
|
# use Rack::Auth::Ldap
|
87
80
|
class Ldap < AbstractHandler
|
88
|
-
|
89
81
|
# the config read accessor
|
90
82
|
# @attr [Rack::Auth::Config] the read accessor to the LDAP Config object
|
91
83
|
attr_reader :config
|
@@ -109,6 +101,7 @@ module Rack
|
|
109
101
|
auth = Ldap::Request.new(env)
|
110
102
|
return unauthorized unless auth.provided?
|
111
103
|
return bad_request unless auth.basic?
|
104
|
+
|
112
105
|
if valid?(auth)
|
113
106
|
env['REMOTE_USER'] = auth.username
|
114
107
|
return @app.call(env)
|
@@ -116,7 +109,6 @@ module Rack
|
|
116
109
|
unauthorized
|
117
110
|
end
|
118
111
|
|
119
|
-
|
120
112
|
private
|
121
113
|
|
122
114
|
# forge a challange header for HTTP basic auth with the realm attribut
|
@@ -131,16 +123,16 @@ module Rack
|
|
131
123
|
def valid?(auth)
|
132
124
|
# how to connect to the ldap server: ldap, ldaps, ldap + starttls
|
133
125
|
if @config.ldaps
|
134
|
-
enc = { :
|
126
|
+
enc = { method: :simple_tls }
|
135
127
|
elsif @config.starttls
|
136
|
-
enc =
|
128
|
+
enc = { method: :start_tls }
|
137
129
|
enc[:tls_options] = @config.tls_options if @config.tls_options
|
138
130
|
else
|
139
|
-
enc = nil
|
131
|
+
enc = nil # just straight ldap
|
140
132
|
end
|
141
|
-
conn = Net::LDAP.new(
|
142
|
-
|
143
|
-
|
133
|
+
conn = Net::LDAP.new(host: @config.hostname, port: @config.port,
|
134
|
+
base: @config.basedn,
|
135
|
+
encryption: enc)
|
144
136
|
|
145
137
|
$stdout.puts "Net::LDAP.new => #{conn.inspect}" if @config.debug
|
146
138
|
|
@@ -157,30 +149,26 @@ module Rack
|
|
157
149
|
$stdout.puts "Net::LDAP::Filter.eq => #{filter.inspect}" if @config.debug
|
158
150
|
|
159
151
|
# find the user and rebind as them to test the password
|
160
|
-
#return conn.bind_as(:filter => filter, :password => auth.password)
|
152
|
+
# return conn.bind_as(:filter => filter, :password => auth.password)
|
161
153
|
$stdout.puts "doing bind_as password.size: #{auth.password.size}..." if @config.debug
|
162
|
-
ret = conn.bind_as(:
|
154
|
+
ret = conn.bind_as(filter: filter, password: auth.password)
|
163
155
|
$stdout.puts "bind_as => #{ret.inspect}" if @config.debug
|
164
156
|
ret
|
165
157
|
end
|
166
158
|
|
167
|
-
private
|
168
|
-
|
169
|
-
|
170
159
|
# Request class the LDAP credentials authenticator
|
171
160
|
# @note please do not instantiate manually, used by Rack::Auth:Ldap
|
172
161
|
class Request < Auth::AbstractRequest
|
173
|
-
|
174
162
|
# return true if the auth scheme provide is really a basic scheme
|
175
163
|
# @return [FalseClass,TrueClass] the result
|
176
164
|
def basic?
|
177
|
-
!parts.first.nil? &&
|
165
|
+
!parts.first.nil? && 'basic' == scheme
|
178
166
|
end
|
179
167
|
|
180
168
|
# return an array of the two credentials [username,password]
|
181
169
|
# @return [Array] the couple [username,password]
|
182
170
|
def credentials
|
183
|
-
@credentials ||= params.
|
171
|
+
@credentials ||= params.unpack1('m*').split(':', 2)
|
184
172
|
end
|
185
173
|
|
186
174
|
# read accessor on the first credentials, username
|
@@ -194,9 +182,7 @@ module Rack
|
|
194
182
|
def password
|
195
183
|
credentials.last
|
196
184
|
end
|
197
|
-
|
198
185
|
end
|
199
|
-
|
200
186
|
end
|
201
187
|
end
|
202
188
|
end
|
data/rack-auth-ldap.gemspec
CHANGED
@@ -1,32 +1,31 @@
|
|
1
|
-
lib = File.expand_path('
|
1
|
+
lib = File.expand_path('lib', __dir__)
|
2
2
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
3
|
-
require 'rack/auth/ldap/version'
|
4
|
-
|
5
3
|
|
6
4
|
Gem::Specification.new do |s|
|
7
|
-
|
8
|
-
s.
|
9
|
-
s.
|
10
|
-
s.
|
11
|
-
s.
|
12
|
-
s.
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
s.add_development_dependency '
|
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'
|
5
|
+
|
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']
|
11
|
+
s.version = `cat VERSION`.chomp
|
12
|
+
s.description = 'rack-auth-ldap : provide LDAP authentication for Rack middelware'
|
13
|
+
|
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
|
-
s.add_development_dependency 'rake', '~> 13.
|
24
|
-
|
25
|
-
|
17
|
+
s.add_development_dependency 'rake', '~> 13.2.1'
|
18
|
+
s.add_development_dependency 'rspec', '~> 3.13.0'
|
19
|
+
s.add_development_dependency 'rubocop', '~> 1.63.2'
|
20
|
+
s.add_development_dependency 'yard', '~> 0.9.36'
|
21
|
+
s.add_development_dependency 'yard-rspec', '~> 0.1'
|
22
|
+
s.add_development_dependency 'version', '~> 1.1.1'
|
23
|
+
s.add_development_dependency 'debride', '~> 1.12'
|
26
24
|
|
25
|
+
s.add_dependency 'net-ldap', '~> 0.19'
|
26
|
+
s.add_dependency 'rack', '~> 3.0.10'
|
27
27
|
|
28
|
-
s.
|
29
|
-
s.add_dependency 'rack', '~> 2.2.2'
|
30
|
-
s.license = "BSD-2-Clause"
|
28
|
+
s.license = 'BSD-2-Clause'
|
31
29
|
s.files = `git ls-files`.split($/)
|
30
|
+
s.metadata['rubygems_mfa_required'] = 'true'
|
32
31
|
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,113 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rack-auth-ldap
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.3
|
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: 2024-04-17 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.2.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.2.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.13.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.13.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.63.2
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: 1.63.2
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: yard
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - "~>"
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: 0.9.36
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - "~>"
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: 0.9.36
|
83
111
|
- !ruby/object:Gem::Dependency
|
84
112
|
name: yard-rspec
|
85
113
|
requirement: !ruby/object:Gem::Requirement
|
@@ -95,72 +123,77 @@ dependencies:
|
|
95
123
|
- !ruby/object:Gem::Version
|
96
124
|
version: '0.1'
|
97
125
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
126
|
+
name: version
|
99
127
|
requirement: !ruby/object:Gem::Requirement
|
100
128
|
requirements:
|
101
129
|
- - "~>"
|
102
130
|
- !ruby/object:Gem::Version
|
103
|
-
version: 1.
|
131
|
+
version: 1.1.1
|
104
132
|
type: :development
|
105
133
|
prerelease: false
|
106
134
|
version_requirements: !ruby/object:Gem::Requirement
|
107
135
|
requirements:
|
108
136
|
- - "~>"
|
109
137
|
- !ruby/object:Gem::Version
|
110
|
-
version: 1.
|
138
|
+
version: 1.1.1
|
111
139
|
- !ruby/object:Gem::Dependency
|
112
|
-
name:
|
140
|
+
name: debride
|
113
141
|
requirement: !ruby/object:Gem::Requirement
|
114
142
|
requirements:
|
115
143
|
- - "~>"
|
116
144
|
- !ruby/object:Gem::Version
|
117
|
-
version:
|
145
|
+
version: '1.12'
|
118
146
|
type: :development
|
119
147
|
prerelease: false
|
120
148
|
version_requirements: !ruby/object:Gem::Requirement
|
121
149
|
requirements:
|
122
150
|
- - "~>"
|
123
151
|
- !ruby/object:Gem::Version
|
124
|
-
version:
|
152
|
+
version: '1.12'
|
125
153
|
- !ruby/object:Gem::Dependency
|
126
154
|
name: net-ldap
|
127
155
|
requirement: !ruby/object:Gem::Requirement
|
128
156
|
requirements:
|
129
157
|
- - "~>"
|
130
158
|
- !ruby/object:Gem::Version
|
131
|
-
version: 0.
|
159
|
+
version: '0.19'
|
132
160
|
type: :runtime
|
133
161
|
prerelease: false
|
134
162
|
version_requirements: !ruby/object:Gem::Requirement
|
135
163
|
requirements:
|
136
164
|
- - "~>"
|
137
165
|
- !ruby/object:Gem::Version
|
138
|
-
version: 0.
|
166
|
+
version: '0.19'
|
139
167
|
- !ruby/object:Gem::Dependency
|
140
168
|
name: rack
|
141
169
|
requirement: !ruby/object:Gem::Requirement
|
142
170
|
requirements:
|
143
171
|
- - "~>"
|
144
172
|
- !ruby/object:Gem::Version
|
145
|
-
version:
|
173
|
+
version: 3.0.10
|
146
174
|
type: :runtime
|
147
175
|
prerelease: false
|
148
176
|
version_requirements: !ruby/object:Gem::Requirement
|
149
177
|
requirements:
|
150
178
|
- - "~>"
|
151
179
|
- !ruby/object:Gem::Version
|
152
|
-
version:
|
180
|
+
version: 3.0.10
|
153
181
|
description: 'rack-auth-ldap : provide LDAP authentication for Rack middelware'
|
154
182
|
email: romain@ultragreen.net
|
155
183
|
executables: []
|
156
184
|
extensions: []
|
157
185
|
extra_rdoc_files: []
|
158
186
|
files:
|
187
|
+
- ".debride-whitelist"
|
188
|
+
- ".github/workflows/main.yml"
|
159
189
|
- ".gitignore"
|
160
|
-
-
|
190
|
+
- ".rubocop.yml"
|
161
191
|
- Gemfile
|
192
|
+
- LICENSE.txt
|
162
193
|
- README.rdoc
|
163
194
|
- Rakefile
|
195
|
+
- VERSION
|
196
|
+
- bom.xml
|
164
197
|
- examples/Gemfile
|
165
198
|
- examples/config.ru
|
166
199
|
- examples/ldap.yml
|
@@ -174,7 +207,8 @@ files:
|
|
174
207
|
homepage: http://www.github.com/lecid/rack-auth-ldap
|
175
208
|
licenses:
|
176
209
|
- BSD-2-Clause
|
177
|
-
metadata:
|
210
|
+
metadata:
|
211
|
+
rubygems_mfa_required: 'true'
|
178
212
|
post_install_message:
|
179
213
|
rdoc_options: []
|
180
214
|
require_paths:
|
@@ -190,7 +224,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
190
224
|
- !ruby/object:Gem::Version
|
191
225
|
version: '0'
|
192
226
|
requirements: []
|
193
|
-
rubygems_version: 3.
|
227
|
+
rubygems_version: 3.4.19
|
194
228
|
signing_key:
|
195
229
|
specification_version: 4
|
196
230
|
summary: Rack middleware providing LDAP authentication
|
/data/{COPYRIGHT → LICENSE.txt}
RENAMED
File without changes
|