mixlib-authentication 1.4.2 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/Gemfile +1 -1
- data/lib/mixlib/authentication/http_authentication_request.rb +1 -1
- data/lib/mixlib/authentication/null_logger.rb +2 -2
- data/lib/mixlib/authentication/signatureverification.rb +14 -14
- data/lib/mixlib/authentication/signedheaderauth.rb +3 -3
- data/lib/mixlib/authentication/version.rb +1 -1
- data/spec/mixlib/authentication/mixlib_authentication_spec.rb +1 -1
- data/spec/mixlib/authentication/mixlib_log_missing_spec.rb +3 -3
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 30042f8e3ac0f6ca2d793fa73556e19d41146554c6673788e2c0d7225e9f3584
|
4
|
+
data.tar.gz: bed096ad15f32dca36dddfe79deb4f7b9f54a8656849b68393ce900944f3cc5b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f2bc4eff96e238290c9d3ec9cfc490b62372b9f4b0668dae56055f88844c8b8b971183000e4189d5ecfd8a4cc8b902aee753f103fecb839ad1bf9b33716d1840
|
7
|
+
data.tar.gz: 0a03fd4b0a2016b93b681ba5a174dcc49089bd2aab2c2601bad114970a0680fe091bd562a6de4a0918f24e52b3eb512159287a239fb0cf1654ca91c452e34a4f
|
data/Gemfile
CHANGED
@@ -72,7 +72,7 @@ module Mixlib
|
|
72
72
|
unless @request_signature
|
73
73
|
@request_signature = headers.find_all { |h| h[0].to_s =~ /^x_ops_authorization_/ }
|
74
74
|
.sort { |x, y| x.to_s[/\d+/].to_i <=> y.to_s[/\d+/].to_i }.map { |i| i[1] }.join("\n")
|
75
|
-
Mixlib::Authentication::Log.
|
75
|
+
Mixlib::Authentication::Log.trace "Reconstituted (user-supplied) request signature: #{@request_signature}"
|
76
76
|
end
|
77
77
|
@request_signature
|
78
78
|
end
|
@@ -4,7 +4,7 @@ module Mixlib
|
|
4
4
|
|
5
5
|
attr_accessor :level
|
6
6
|
|
7
|
-
%i{debug info warn error fatal}.each do |method_name|
|
7
|
+
%i{trace debug info warn error fatal}.each do |method_name|
|
8
8
|
class_eval(<<-METHOD_DEFN, __FILE__, __LINE__)
|
9
9
|
def #{method_name}(msg=nil, &block)
|
10
10
|
true
|
@@ -12,7 +12,7 @@ module Mixlib
|
|
12
12
|
METHOD_DEFN
|
13
13
|
end
|
14
14
|
|
15
|
-
%i{debug? info? warn? error? fatal?}.each do |method_name|
|
15
|
+
%i{trace? debug? info? warn? error? fatal?}.each do |method_name|
|
16
16
|
class_eval(<<-METHOD_DEFN, __FILE__, __LINE__)
|
17
17
|
def #{method_name}
|
18
18
|
false
|
@@ -76,7 +76,7 @@ module Mixlib
|
|
76
76
|
# X-Ops-Content-Hash:
|
77
77
|
# X-Ops-Authorization-#{line_number}
|
78
78
|
def authenticate_request(user_secret, time_skew = (15 * 60))
|
79
|
-
Mixlib::Authentication.logger.
|
79
|
+
Mixlib::Authentication.logger.trace "Initializing header auth : #{request.inspect}"
|
80
80
|
|
81
81
|
@user_secret = user_secret
|
82
82
|
@allowed_time_skew = time_skew # in seconds
|
@@ -149,15 +149,15 @@ module Mixlib
|
|
149
149
|
(request_decrypted_block == candidate_block)
|
150
150
|
end
|
151
151
|
|
152
|
-
# Keep the
|
153
|
-
Mixlib::Authentication.logger.
|
154
|
-
Mixlib::Authentication.logger.
|
155
|
-
Mixlib::Authentication.logger.
|
156
|
-
Mixlib::Authentication.logger.
|
152
|
+
# Keep the trace messages lined up so it's easy to scan them
|
153
|
+
Mixlib::Authentication.logger.trace("Verifying request signature:")
|
154
|
+
Mixlib::Authentication.logger.trace(" Expected Block is: '#{candidate_block}'")
|
155
|
+
Mixlib::Authentication.logger.trace("Decrypted block is: '#{request_decrypted_block}'")
|
156
|
+
Mixlib::Authentication.logger.trace("Signatures match? : '#{@valid_signature}'")
|
157
157
|
|
158
158
|
@valid_signature
|
159
159
|
rescue => e
|
160
|
-
Mixlib::Authentication.logger.
|
160
|
+
Mixlib::Authentication.logger.trace("Failed to verify request signature: #{e.class.name}: #{e.message}")
|
161
161
|
@valid_signature = false
|
162
162
|
end
|
163
163
|
|
@@ -168,10 +168,10 @@ module Mixlib
|
|
168
168
|
def verify_content_hash
|
169
169
|
@valid_content_hash = (content_hash == hashed_body)
|
170
170
|
|
171
|
-
# Keep the
|
172
|
-
Mixlib::Authentication.logger.
|
173
|
-
Mixlib::Authentication.logger.
|
174
|
-
Mixlib::Authentication.logger.
|
171
|
+
# Keep the trace messages lined up so it's easy to scan them
|
172
|
+
Mixlib::Authentication.logger.trace("Expected content hash is: '#{hashed_body}'")
|
173
|
+
Mixlib::Authentication.logger.trace(" Request Content Hash is: '#{content_hash}'")
|
174
|
+
Mixlib::Authentication.logger.trace(" Hashes match?: #{@valid_content_hash}")
|
175
175
|
|
176
176
|
@valid_content_hash
|
177
177
|
end
|
@@ -211,11 +211,11 @@ module Mixlib
|
|
211
211
|
# Any file that's included in the request is hashed if it's there. Otherwise,
|
212
212
|
# we hash the body.
|
213
213
|
if file_param
|
214
|
-
Mixlib::Authentication.logger.
|
214
|
+
Mixlib::Authentication.logger.trace "Digesting file_param: '#{file_param.inspect}'"
|
215
215
|
@hashed_body = digester.hash_file(file_param, digest)
|
216
216
|
else
|
217
217
|
body = request.raw_post
|
218
|
-
Mixlib::Authentication.logger.
|
218
|
+
Mixlib::Authentication.logger.trace "Digesting body: '#{body}'"
|
219
219
|
@hashed_body = digester.hash_string(body, digest)
|
220
220
|
end
|
221
221
|
end
|
@@ -232,7 +232,7 @@ module Mixlib
|
|
232
232
|
def timestamp_within_bounds?(time1, time2)
|
233
233
|
time_diff = (time2 - time1).abs
|
234
234
|
is_allowed = (time_diff < @allowed_time_skew)
|
235
|
-
Mixlib::Authentication.logger.
|
235
|
+
Mixlib::Authentication.logger.trace "Request time difference: #{time_diff}, within #{@allowed_time_skew} seconds? : #{!!is_allowed}"
|
236
236
|
is_allowed
|
237
237
|
end
|
238
238
|
end
|
@@ -115,7 +115,7 @@ module Mixlib
|
|
115
115
|
header_hash[key] = signature_lines[idx]
|
116
116
|
end
|
117
117
|
|
118
|
-
Mixlib::Authentication.logger.
|
118
|
+
Mixlib::Authentication.logger.trace "Header hash: #{header_hash.inspect}"
|
119
119
|
|
120
120
|
header_hash
|
121
121
|
end
|
@@ -236,7 +236,7 @@ module Mixlib
|
|
236
236
|
memo[field_name.to_sym] = field_value.strip
|
237
237
|
memo
|
238
238
|
end
|
239
|
-
Mixlib::Authentication.logger.
|
239
|
+
Mixlib::Authentication.logger.trace "Parsed signing description: #{parts.inspect}"
|
240
240
|
parts
|
241
241
|
end
|
242
242
|
|
@@ -247,7 +247,7 @@ module Mixlib
|
|
247
247
|
# private
|
248
248
|
def do_sign(private_key, digest, sign_algorithm, sign_version)
|
249
249
|
string_to_sign = canonicalize_request(sign_algorithm, sign_version)
|
250
|
-
Mixlib::Authentication.logger.
|
250
|
+
Mixlib::Authentication.logger.trace "String to sign: '#{string_to_sign}'"
|
251
251
|
case sign_version
|
252
252
|
when "1.3"
|
253
253
|
private_key.sign(digest.new, string_to_sign)
|
@@ -63,7 +63,7 @@ class MockFile
|
|
63
63
|
end
|
64
64
|
|
65
65
|
# Uncomment this to get some more info from the methods we're testing.
|
66
|
-
#Mixlib::Authentication.logger.level = :
|
66
|
+
#Mixlib::Authentication.logger.level = :trace
|
67
67
|
|
68
68
|
describe "Mixlib::Authentication::SignedHeaderAuth" do
|
69
69
|
|
@@ -25,7 +25,7 @@ describe "Mixlib::Authentication::Log" do
|
|
25
25
|
expect(Mixlib::Authentication::Log.level).to eq(:error)
|
26
26
|
end
|
27
27
|
|
28
|
-
%w{debug info warn error fatal}.each do |level|
|
28
|
+
%w{trace debug info warn error fatal}.each do |level|
|
29
29
|
it "logs at level #{level}" do
|
30
30
|
expect(Mixlib::Authentication::Log).to receive(level).with("foo")
|
31
31
|
|
@@ -44,9 +44,9 @@ describe "Mixlib::Authentication::Log" do
|
|
44
44
|
.to include(Mixlib::Log)
|
45
45
|
end
|
46
46
|
|
47
|
-
%w{debug info warn error fatal}.each do |level|
|
47
|
+
%w{trace debug info warn error fatal}.each do |level|
|
48
48
|
it "forward #{level} to mixlib-log" do
|
49
|
-
|
49
|
+
expect_any_instance_of(Mixlib::Log).to receive(level).with("foo")
|
50
50
|
|
51
51
|
Mixlib::Authentication.logger.send(level, "foo")
|
52
52
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mixlib-authentication
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chef Software, Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-04-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec-core
|
@@ -124,7 +124,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
124
124
|
version: '0'
|
125
125
|
requirements: []
|
126
126
|
rubyforge_project:
|
127
|
-
rubygems_version: 2.
|
127
|
+
rubygems_version: 2.7.3
|
128
128
|
signing_key:
|
129
129
|
specification_version: 4
|
130
130
|
summary: Mixes in simple per-request authentication
|