rack-simple_auth 1.0.0rc → 1.0.0
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 +7 -7
- data/MANIFEST +26 -26
- data/README.rdoc +121 -0
- data/checksum/rack-simple_auth-1.0.0.gem.sha512 +1 -0
- data/checksum/rack-simple_auth-1.0.0rc.gem.sha512 +1 -0
- data/doc/Rack.html +128 -0
- data/doc/Rack/SimpleAuth.html +252 -0
- data/doc/Rack/SimpleAuth/HMAC.html +128 -0
- data/doc/Rack/SimpleAuth/HMAC/Config.html +1003 -0
- data/doc/Rack/SimpleAuth/HMAC/Middleware.html +1418 -0
- data/doc/Rack/SimpleAuth/Logger.html +264 -0
- data/doc/_index.html +185 -0
- data/doc/class_list.html +54 -0
- data/doc/css/common.css +1 -0
- data/doc/css/full_list.css +57 -0
- data/doc/css/style.css +339 -0
- data/doc/examples/index.php +32 -0
- data/{test/rack/simple_auth/hmac/config.ru → doc/examples/rack_lobster.ru} +1 -2
- data/doc/file.README.html +221 -0
- data/doc/file_list.html +56 -0
- data/doc/frames.html +26 -0
- data/doc/index.html +221 -0
- data/doc/js/app.js +219 -0
- data/doc/js/full_list.js +178 -0
- data/doc/js/jquery.js +4 -0
- data/doc/method_list.html +179 -0
- data/doc/top-level-namespace.html +112 -0
- data/lib/rack/simple_auth.rb +3 -1
- data/lib/rack/simple_auth/hmac/config.rb +46 -8
- data/lib/rack/simple_auth/hmac/middleware.rb +102 -75
- data/lib/rack/simple_auth/logger.rb +8 -3
- data/lib/rack/simple_auth/version.rb +1 -1
- metadata +91 -105
- data/.gitignore +0 -18
- data/.rubocop.yml +0 -1
- data/.travis.yml +0 -22
- data/.yardopts +0 -1
- data/Gemfile +0 -4
- data/README.md +0 -68
- data/Rakefile +0 -8
- data/rubocop-todo.yml +0 -19
- data/task/build.rake +0 -4
- data/task/checksum.rake +0 -15
- data/task/console.rake +0 -7
- data/task/default.rake +0 -6
- data/task/floodtest.rake +0 -34
- data/task/manifest.rake +0 -8
- data/task/test.rake +0 -23
- data/test/rack/simple_auth/hmac/config_fail.ru +0 -23
- data/test/rack/simple_auth/hmac/config_fail_option.ru +0 -24
- data/test/rack/simple_auth/hmac/config_fail_run.ru +0 -22
- data/test/rack/simple_auth/hmac/config_fail_step.ru +0 -23
- data/test/rack/simple_auth/hmac/config_fail_tolerance.ru +0 -23
- data/test/rack/simple_auth/hmac/hmac_fail_run_test.rb +0 -26
- data/test/rack/simple_auth/hmac/hmac_fail_test.rb +0 -38
- data/test/rack/simple_auth/hmac/hmac_test.rb +0 -128
- data/test/test_helper.rb +0 -50
data/lib/rack/simple_auth.rb
CHANGED
@@ -12,7 +12,9 @@ module Rack
|
|
12
12
|
# Module which Contains different Authorization / Authentication Classes (HMAC, ..)
|
13
13
|
module SimpleAuth
|
14
14
|
class << self
|
15
|
-
|
15
|
+
##
|
16
|
+
# Method to return Gem Root Dir from everywhere in the gem
|
17
|
+
#
|
16
18
|
# @return [String] Gem Root Folder
|
17
19
|
def root
|
18
20
|
::File.dirname(::File.dirname(::File.expand_path('..', __FILE__)))
|
@@ -1,30 +1,68 @@
|
|
1
1
|
module Rack
|
2
2
|
module SimpleAuth
|
3
3
|
module HMAC
|
4
|
-
|
4
|
+
##
|
5
5
|
# Config objects will be instantiated out of this class when using Rack::SimpleAuth::HMAC::Middleware
|
6
6
|
# Also the public instance attributes / virtual attributes will be populated via the Middleware DSL
|
7
|
+
#
|
8
|
+
# @!attribute [w] tolerance
|
9
|
+
# @return [Fixnum|Float]
|
10
|
+
#
|
11
|
+
# @!attribute [w] secret
|
12
|
+
# @return [String]
|
13
|
+
#
|
14
|
+
# @!attribute [w] signature
|
15
|
+
# @return [String]
|
16
|
+
#
|
17
|
+
# @!attribute [rw] logpath
|
18
|
+
# @return [String]
|
19
|
+
#
|
20
|
+
# @!attribute [rw] request_config
|
21
|
+
# @return [Hash]
|
22
|
+
#
|
23
|
+
# @!attribute [rw] verbose
|
24
|
+
# @return [TrueClass|NilClass]
|
25
|
+
#
|
7
26
|
class Config < Hash
|
8
|
-
attr_writer :tolerance
|
27
|
+
attr_writer :tolerance
|
9
28
|
attr_writer :secret, :signature
|
29
|
+
|
30
|
+
attr_accessor :verbose
|
10
31
|
attr_accessor :logpath, :request_config
|
11
32
|
|
33
|
+
##
|
34
|
+
# Throw Runtime error for unknown attribute
|
35
|
+
#
|
36
|
+
# @param [Symbol] name
|
37
|
+
# @param [Array] args
|
38
|
+
#
|
12
39
|
def method_missing(name, *args)
|
13
|
-
fail "
|
40
|
+
fail "Unknown option #{name.to_s.gsub!('=', '')}"
|
14
41
|
end
|
15
42
|
|
43
|
+
##
|
44
|
+
# Tolerance Attribute with nil guard
|
45
|
+
#
|
46
|
+
# @return [Fixnum] tolerance
|
47
|
+
#
|
16
48
|
def tolerance
|
17
|
-
@tolerance ||
|
18
|
-
end
|
19
|
-
|
20
|
-
def stepsize
|
21
|
-
@stepsize || 1
|
49
|
+
@tolerance || 1000
|
22
50
|
end
|
23
51
|
|
52
|
+
##
|
53
|
+
# Secret Attribute with nil guard
|
54
|
+
#
|
55
|
+
# @return [String] secret
|
56
|
+
#
|
24
57
|
def secret
|
25
58
|
@secret || ''
|
26
59
|
end
|
27
60
|
|
61
|
+
##
|
62
|
+
# Signature Attribute with nil guard
|
63
|
+
#
|
64
|
+
# @return [String] signature
|
65
|
+
#
|
28
66
|
def signature
|
29
67
|
@signature || ''
|
30
68
|
end
|
@@ -1,39 +1,43 @@
|
|
1
1
|
module Rack
|
2
|
-
# Module which Contains different Authorization / Authentication Classes (HMAC, ..)
|
3
2
|
module SimpleAuth
|
4
|
-
# module HMAC
|
5
3
|
# Contains different classes for authorizing against a hmac signed request
|
6
4
|
module HMAC
|
7
|
-
|
8
|
-
# Middleware class which represents the interface to the rack api via
|
5
|
+
##
|
6
|
+
# Middleware class which represents the interface to the rack api via {#call}
|
9
7
|
# and checks if a request is hmac authorized.
|
10
8
|
#
|
11
|
-
# Usage
|
9
|
+
# @example Basic Usage
|
10
|
+
# "request_config = {
|
11
|
+
# 'GET' => 'path',
|
12
|
+
# 'POST' => 'params',
|
13
|
+
# 'DELETE' => 'path',
|
14
|
+
# 'PUT' => 'path',
|
15
|
+
# 'PATCH' => 'path'
|
16
|
+
# }
|
12
17
|
#
|
13
|
-
#
|
14
|
-
#
|
18
|
+
# use Rack::SimpleAuth::HMAC::Middleware do |options|
|
19
|
+
# options.tolerance = 1500
|
15
20
|
#
|
16
|
-
#
|
17
|
-
#
|
18
|
-
# 'POST' => 'params',
|
19
|
-
# 'DELETE' => 'path',
|
20
|
-
# 'PUT' => 'path',
|
21
|
-
# 'PATCH' => 'path'
|
22
|
-
# }
|
21
|
+
# options.secret = 'test_secret'
|
22
|
+
# options.signature = 'test_signature'
|
23
23
|
#
|
24
|
-
#
|
25
|
-
#
|
26
|
-
# options.stepsize = 0.01
|
24
|
+
# options.logpath = "#{File.expand_path('..', __FILE__)}/logs"
|
25
|
+
# options.request_config = request_config
|
27
26
|
#
|
28
|
-
#
|
29
|
-
#
|
27
|
+
# options.verbose = true
|
28
|
+
# end
|
30
29
|
#
|
31
|
-
#
|
32
|
-
# options.request_config = request_config
|
33
|
-
# end
|
30
|
+
# run Rack::Lobster.new"
|
34
31
|
#
|
35
|
-
# run Rack::Lobster.new
|
36
32
|
class Middleware
|
33
|
+
##
|
34
|
+
# Throw NoMethodError and give hint if method who was called is Rack::SimpleAuth::Middleware.call
|
35
|
+
#
|
36
|
+
# @param [Symbol] name
|
37
|
+
# @param [Array] args
|
38
|
+
#
|
39
|
+
# @raise [NoMethodError] if the method isn't defined
|
40
|
+
# and outputs additional hint for calling Rack::SimpleAuth::Middleware.call
|
37
41
|
def self.method_missing(name, *args)
|
38
42
|
msg = "Did you try to use HMAC Middleware as Rack Application via 'run'?\n" if name.eql?(:call)
|
39
43
|
msg << "method: #{name}\n"
|
@@ -42,21 +46,27 @@ module Rack
|
|
42
46
|
|
43
47
|
fail NoMethodError, msg
|
44
48
|
end
|
49
|
+
|
50
|
+
##
|
45
51
|
# Constructor for Rack Middleware (passing the rack stack)
|
52
|
+
#
|
46
53
|
# @param [Rack Application] app [next middleware or rack app which gets called]
|
47
|
-
# @param [
|
54
|
+
# @param [Proc] block [the dsl block which will be yielded into the config object]
|
55
|
+
#
|
48
56
|
def initialize(app, &block)
|
49
57
|
@app, @config = app, Config.new
|
50
|
-
yield @config if block_given?
|
51
58
|
|
52
|
-
|
53
|
-
valid_tolerance?
|
59
|
+
yield @config if block_given?
|
54
60
|
end
|
55
61
|
|
62
|
+
##
|
56
63
|
# call Method for Rack Middleware/Application
|
64
|
+
#
|
57
65
|
# @param [Hash] env [Rack Env Hash which contains headers etc..]
|
66
|
+
#
|
58
67
|
def call(env)
|
59
68
|
@request = Rack::Request.new(env)
|
69
|
+
@allowed_messages = allowed_messages
|
60
70
|
|
61
71
|
if valid_request?
|
62
72
|
@app.call(env)
|
@@ -66,68 +76,95 @@ module Rack
|
|
66
76
|
end
|
67
77
|
end
|
68
78
|
|
69
|
-
|
70
|
-
|
79
|
+
private
|
80
|
+
|
81
|
+
##
|
82
|
+
# Checks for valid HMAC Request
|
83
|
+
#
|
84
|
+
# @return [TrueClass] if request is authorized
|
85
|
+
# @return [FalseClass] if request is not authorized or HTTP_AUTHORIZATION Header is not set
|
86
|
+
#
|
71
87
|
def valid_request?
|
72
|
-
|
73
|
-
log
|
88
|
+
log
|
74
89
|
|
75
|
-
|
76
|
-
end
|
90
|
+
return false if empty_header? || !authorized?
|
77
91
|
|
78
|
-
|
79
|
-
|
80
|
-
else
|
81
|
-
log
|
92
|
+
true
|
93
|
+
end
|
82
94
|
|
83
|
-
|
84
|
-
|
95
|
+
##
|
96
|
+
# Check if HTTP_AUTHORIZATION Header is set
|
97
|
+
#
|
98
|
+
# @return [TrueClass] if header is set
|
99
|
+
# @return [FalseClass] if header is not set
|
100
|
+
#
|
101
|
+
def empty_header?
|
102
|
+
@request.env['HTTP_AUTHORIZATION'].nil?
|
85
103
|
end
|
86
104
|
|
87
|
-
|
105
|
+
##
|
106
|
+
# Check if request is authorized
|
107
|
+
#
|
108
|
+
# @return [TrueClass] if request is authorized -> {#request_signature} is correct & {#request_message} is included
|
109
|
+
# in {#allowed_messages}
|
110
|
+
# @return [FalseClass] if request is not authorized
|
111
|
+
#
|
112
|
+
def authorized?
|
113
|
+
request_signature.eql?(@config.signature) && @allowed_messages.include?(request_message)
|
114
|
+
end
|
88
115
|
|
116
|
+
##
|
89
117
|
# Get request signature
|
118
|
+
#
|
119
|
+
# @return [String] signature of current request
|
120
|
+
#
|
90
121
|
def request_signature
|
91
122
|
@request.env['HTTP_AUTHORIZATION'].split(':').last
|
92
123
|
end
|
93
124
|
|
125
|
+
##
|
94
126
|
# Get encrypted request message
|
127
|
+
#
|
128
|
+
# @return [String] message of current request
|
129
|
+
#
|
95
130
|
def request_message
|
96
131
|
@request.env['HTTP_AUTHORIZATION'].split(':').first
|
97
132
|
end
|
98
133
|
|
99
|
-
|
100
|
-
#
|
134
|
+
##
|
135
|
+
# Builds Array of allowed message hashs between @tolerance via {#message}
|
136
|
+
#
|
137
|
+
# @return [Array]
|
101
138
|
def allowed_messages
|
102
139
|
messages = []
|
103
140
|
|
104
|
-
|
105
|
-
(
|
106
|
-
|
141
|
+
# Timestamp with milliseconds as Fixnum
|
142
|
+
date = (Time.now.to_f.freeze * 1000).to_i
|
143
|
+
(-(@config.tolerance)..@config.tolerance).step(1) do |i|
|
107
144
|
messages << OpenSSL::HMAC.hexdigest(OpenSSL::Digest.new('sha256'), @config.secret, message(date, i))
|
108
145
|
end
|
109
146
|
|
110
147
|
messages
|
111
148
|
end
|
112
149
|
|
150
|
+
##
|
113
151
|
# Get Message for current Request and delay
|
152
|
+
#
|
114
153
|
# @param [Fixnum] date [current date in timestamp format]
|
115
154
|
# @param [Fixnum] delay [delay in timestamp format]
|
116
|
-
#
|
155
|
+
#
|
156
|
+
# @return [String] message
|
117
157
|
def message(date, delay = 0)
|
118
158
|
date += delay
|
119
|
-
date = date.to_i if delay.eql?(0.0)
|
120
159
|
|
121
|
-
|
122
|
-
puts "Delay: #{delay}, Timestamp: #{date}" if ENV['RACK_ENV'].eql?('development')
|
123
|
-
|
124
|
-
{ 'method' => @request.request_method, 'date' => date, 'data' => request_data(@config) }.to_json
|
160
|
+
{ 'method' => @request.request_method, 'date' => date, 'data' => request_data }.to_json
|
125
161
|
end
|
126
162
|
|
127
|
-
|
128
|
-
#
|
129
|
-
#
|
130
|
-
|
163
|
+
##
|
164
|
+
# Get Request Data specified by @config.request_config
|
165
|
+
#
|
166
|
+
# @return [String|Hash] data
|
167
|
+
def request_data
|
131
168
|
if @config.request_config[@request.request_method] == 'path' || @config.request_config[@request.request_method] == 'params'
|
132
169
|
@request.send(@config.request_config[@request.request_method].to_sym)
|
133
170
|
else
|
@@ -135,43 +172,33 @@ module Rack
|
|
135
172
|
end
|
136
173
|
end
|
137
174
|
|
138
|
-
|
175
|
+
##
|
176
|
+
# Log to @config.logpath
|
139
177
|
# Contains:
|
140
178
|
# - allowed messages and received message
|
141
179
|
# - time when request was made
|
142
180
|
# - type of request
|
143
181
|
# - requested path
|
182
|
+
#
|
183
|
+
# Note: This is kinda slow under Rubinius
|
184
|
+
# (Rack::SimpleAuth::Logger.log has IO action, i think there are some performance issues)
|
185
|
+
#
|
144
186
|
def log
|
145
187
|
if @config.logpath
|
146
|
-
msg =
|
188
|
+
msg = "#{Time.new} - #{@request.request_method} #{@request.path} - 400 Unauthorized\n"
|
147
189
|
msg << "HTTP_AUTHORIZATION: #{@request.env['HTTP_AUTHORIZATION']}\n"
|
148
190
|
msg << "Auth Message Config: #{@config.request_config[@request.request_method]}\n"
|
149
191
|
|
150
|
-
if allowed_messages
|
192
|
+
if @allowed_messages
|
151
193
|
msg << "Allowed Encrypted Messages:\n"
|
152
|
-
allowed_messages.each do |hash|
|
194
|
+
@allowed_messages.each do |hash|
|
153
195
|
msg << "#{hash}\n"
|
154
196
|
end
|
155
197
|
end
|
156
198
|
|
157
199
|
msg << "Auth Signature: #{@config.signature}"
|
158
200
|
|
159
|
-
Rack::SimpleAuth::Logger.log(@config.logpath, ENV['RACK_ENV'], msg)
|
160
|
-
end
|
161
|
-
end
|
162
|
-
|
163
|
-
# Check if Stepsize is valid, if > min ensure stepsize is min stepsize
|
164
|
-
# @param [float] min [minimum allowed stepsize]
|
165
|
-
# check @config.stepsize < min
|
166
|
-
def valid_stepsize?(min)
|
167
|
-
fail "Minimum allowed stepsize is #{min}" if @config.stepsize < min
|
168
|
-
end
|
169
|
-
|
170
|
-
# Check if tolerance is valid, tolerance must be greater than stepsize
|
171
|
-
# check @config.tolerance < @config.stepsize
|
172
|
-
def valid_tolerance?
|
173
|
-
if @config.tolerance < @config.stepsize
|
174
|
-
fail "Tolerance must be greater than stepsize - Tolerance: #{@config.tolerance}, Stepsize: #{@config.stepsize}"
|
201
|
+
Rack::SimpleAuth::Logger.log(@config.logpath, @config.verbose, ENV['RACK_ENV'], msg)
|
175
202
|
end
|
176
203
|
end
|
177
204
|
end # Middleware
|
@@ -4,14 +4,19 @@ module Rack
|
|
4
4
|
# This class receives a logpath, env and message and
|
5
5
|
# prints the message to the specified logpath for the proper env file (eg.: /path/to/file/test_error.log for test env)
|
6
6
|
module Logger
|
7
|
-
|
7
|
+
# Create Logfile
|
8
|
+
#
|
9
|
+
# @param [String] logpath [path to logfile]
|
10
|
+
# @param [TrueClass|FalseClass] verbose [if true print to stdout]
|
11
|
+
# @param [String] msg [Message defined by each Authorization class]
|
12
|
+
#
|
13
|
+
def self.log(logpath, verbose = false, env, msg)
|
8
14
|
system("mkdir #{logpath}") unless Dir.exist?("#{logpath}")
|
9
15
|
open("#{logpath}/#{env}_error.log", 'a') do |f|
|
10
16
|
f << "#{msg}\n"
|
11
17
|
end
|
12
18
|
|
13
|
-
|
14
|
-
puts msg if ENV['RACK_ENV'].eql?('development')
|
19
|
+
puts msg if verbose
|
15
20
|
end
|
16
21
|
end # Logger
|
17
22
|
end # SimpleAuth
|
metadata
CHANGED
@@ -1,152 +1,138 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: rack-simple_auth
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
|
-
authors:
|
6
|
+
authors:
|
7
7
|
- Benny1992
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
|
12
|
-
|
13
|
-
|
11
|
+
|
12
|
+
date: 2014-04-30 00:00:00 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
14
15
|
name: rack
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - ">="
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '0'
|
20
|
-
type: :runtime
|
21
16
|
prerelease: false
|
22
|
-
|
23
|
-
requirements:
|
24
|
-
-
|
25
|
-
-
|
26
|
-
|
27
|
-
|
17
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
18
|
+
requirements:
|
19
|
+
- &id006
|
20
|
+
- ">="
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: "0"
|
23
|
+
type: :runtime
|
24
|
+
version_requirements: *id001
|
25
|
+
- !ruby/object:Gem::Dependency
|
28
26
|
name: bundler
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - "~>"
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '1.6'
|
34
|
-
type: :development
|
35
27
|
prerelease: false
|
36
|
-
|
37
|
-
requirements:
|
38
|
-
- -
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version:
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: rake
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - "~>"
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '10.3'
|
28
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
29
|
+
requirements:
|
30
|
+
- - ~>
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: "1.6"
|
48
33
|
type: :development
|
34
|
+
version_requirements: *id002
|
35
|
+
- !ruby/object:Gem::Dependency
|
36
|
+
name: rake
|
49
37
|
prerelease: false
|
50
|
-
|
51
|
-
requirements:
|
52
|
-
- -
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version:
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: coveralls
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
58
|
-
requirements:
|
59
|
-
- - "~>"
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '0.7'
|
38
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
39
|
+
requirements:
|
40
|
+
- - ~>
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: "10.3"
|
62
43
|
type: :development
|
44
|
+
version_requirements: *id003
|
45
|
+
- !ruby/object:Gem::Dependency
|
46
|
+
name: coveralls
|
63
47
|
prerelease: false
|
64
|
-
|
65
|
-
requirements:
|
66
|
-
- -
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
version:
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: rack-test
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
72
|
-
requirements:
|
73
|
-
- - "~>"
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
version: '0.6'
|
48
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
49
|
+
requirements:
|
50
|
+
- - ~>
|
51
|
+
- !ruby/object:Gem::Version
|
52
|
+
version: "0.7"
|
76
53
|
type: :development
|
54
|
+
version_requirements: *id004
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rack-test
|
77
57
|
prerelease: false
|
78
|
-
|
79
|
-
requirements:
|
80
|
-
- -
|
81
|
-
- !ruby/object:Gem::Version
|
82
|
-
version:
|
58
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
59
|
+
requirements:
|
60
|
+
- - ~>
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: "0.6"
|
63
|
+
type: :development
|
64
|
+
version_requirements: *id005
|
83
65
|
description: SimpleAuth HMAC authentication
|
84
|
-
email:
|
66
|
+
email:
|
85
67
|
- r3qnbenni@gmail.com
|
86
68
|
executables: []
|
69
|
+
|
87
70
|
extensions: []
|
71
|
+
|
88
72
|
extra_rdoc_files: []
|
89
|
-
|
90
|
-
|
91
|
-
- ".rubocop.yml"
|
92
|
-
- ".travis.yml"
|
93
|
-
- ".yardopts"
|
94
|
-
- Gemfile
|
73
|
+
|
74
|
+
files:
|
95
75
|
- LICENSE.txt
|
96
76
|
- MANIFEST
|
97
|
-
- README.
|
98
|
-
- Rakefile
|
77
|
+
- README.rdoc
|
99
78
|
- checksum/rack-simple_auth-0.0.9.gem.sha512
|
100
79
|
- checksum/rack-simple_auth-0.1.0.gem.sha512
|
101
80
|
- checksum/rack-simple_auth-0.1.1.gem.sha512
|
102
81
|
- checksum/rack-simple_auth-0.1.2.gem.sha512
|
82
|
+
- checksum/rack-simple_auth-1.0.0.gem.sha512
|
83
|
+
- checksum/rack-simple_auth-1.0.0rc.gem.sha512
|
84
|
+
- doc/Rack.html
|
85
|
+
- doc/Rack/SimpleAuth.html
|
86
|
+
- doc/Rack/SimpleAuth/HMAC.html
|
87
|
+
- doc/Rack/SimpleAuth/HMAC/Config.html
|
88
|
+
- doc/Rack/SimpleAuth/HMAC/Middleware.html
|
89
|
+
- doc/Rack/SimpleAuth/Logger.html
|
90
|
+
- doc/_index.html
|
91
|
+
- doc/class_list.html
|
92
|
+
- doc/css/common.css
|
93
|
+
- doc/css/full_list.css
|
94
|
+
- doc/css/style.css
|
95
|
+
- doc/examples/index.php
|
96
|
+
- doc/examples/rack_lobster.ru
|
97
|
+
- doc/file.README.html
|
98
|
+
- doc/file_list.html
|
99
|
+
- doc/frames.html
|
100
|
+
- doc/index.html
|
101
|
+
- doc/js/app.js
|
102
|
+
- doc/js/full_list.js
|
103
|
+
- doc/js/jquery.js
|
104
|
+
- doc/method_list.html
|
105
|
+
- doc/top-level-namespace.html
|
103
106
|
- lib/rack/simple_auth.rb
|
104
107
|
- lib/rack/simple_auth/hmac/config.rb
|
105
108
|
- lib/rack/simple_auth/hmac/middleware.rb
|
106
109
|
- lib/rack/simple_auth/logger.rb
|
107
110
|
- lib/rack/simple_auth/version.rb
|
108
111
|
- rack-simple_auth.gemspec
|
109
|
-
- rubocop-todo.yml
|
110
|
-
- task/build.rake
|
111
|
-
- task/checksum.rake
|
112
|
-
- task/console.rake
|
113
|
-
- task/default.rake
|
114
|
-
- task/floodtest.rake
|
115
|
-
- task/manifest.rake
|
116
|
-
- task/test.rake
|
117
|
-
- test/rack/simple_auth/hmac/config.ru
|
118
|
-
- test/rack/simple_auth/hmac/config_fail.ru
|
119
|
-
- test/rack/simple_auth/hmac/config_fail_option.ru
|
120
|
-
- test/rack/simple_auth/hmac/config_fail_run.ru
|
121
|
-
- test/rack/simple_auth/hmac/config_fail_step.ru
|
122
|
-
- test/rack/simple_auth/hmac/config_fail_tolerance.ru
|
123
|
-
- test/rack/simple_auth/hmac/hmac_fail_run_test.rb
|
124
|
-
- test/rack/simple_auth/hmac/hmac_fail_test.rb
|
125
|
-
- test/rack/simple_auth/hmac/hmac_test.rb
|
126
|
-
- test/test_helper.rb
|
127
112
|
homepage: https://github.com/Benny1992/rack-simple_auth
|
128
|
-
licenses:
|
113
|
+
licenses:
|
129
114
|
- MIT
|
130
115
|
metadata: {}
|
131
|
-
|
116
|
+
|
117
|
+
post_install_message: "Please report any issues at: https://github.com/Benny1992/rack-simple_auth/issues/new"
|
132
118
|
rdoc_options: []
|
133
|
-
|
119
|
+
|
120
|
+
require_paths:
|
134
121
|
- lib
|
135
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
136
|
-
requirements:
|
122
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
123
|
+
requirements:
|
137
124
|
- - ">="
|
138
|
-
- !ruby/object:Gem::Version
|
125
|
+
- !ruby/object:Gem::Version
|
139
126
|
version: 1.8.7
|
140
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
141
|
-
requirements:
|
142
|
-
-
|
143
|
-
- !ruby/object:Gem::Version
|
144
|
-
version: 1.3.1
|
127
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- *id006
|
145
130
|
requirements: []
|
131
|
+
|
146
132
|
rubyforge_project:
|
147
133
|
rubygems_version: 2.2.2
|
148
134
|
signing_key:
|
149
135
|
specification_version: 4
|
150
136
|
summary: SimpleAuth HMAC authentication
|
151
137
|
test_files: []
|
152
|
-
|
138
|
+
|