mixlib-authentication 1.4.2 → 2.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 +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
|