mauth-client 4.0.2 → 4.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.fossa.yml +14 -0
- data/.gitignore +1 -0
- data/.travis.yml +25 -10
- data/CHANGELOG.md +15 -1
- data/CONTRIBUTING.md +2 -2
- data/README.md +1 -1
- data/Rakefile +0 -1
- data/doc/implementations.md +7 -2
- data/examples/Gemfile +1 -1
- data/examples/Gemfile.lock +14 -14
- data/lib/mauth/client.rb +40 -29
- data/lib/mauth/proxy.rb +2 -2
- data/lib/mauth/version.rb +1 -1
- data/mauth-client.gemspec +12 -11
- metadata +76 -45
- data/gemfiles/ruby_2.1.gemfile +0 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 2e197a763a48eeb58d88be12eab10dc6e2c7c104287b0371a41120bd920402db
|
4
|
+
data.tar.gz: 84ef6da779ededf897bfe7a44eb2581073c2404a1208ae3a233b2d84c1bc98eb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f640994364eee25edcbbf611a611eb539efc96432de37daf78c0211f83e966154c5dcfb321fff6e25e067fdb53faae6af792665897a7ae4d295beada833282d2
|
7
|
+
data.tar.gz: 6270a48e063208842a1055d39814b96fe2cb4b8ceea04592eb94c62b533f110fe5510ca9060f321d5f4a309b96aaf9c99489ff28e068e5ddd6c04e20c1ae9bab
|
data/.fossa.yml
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
# Generated by FOSSA CLI (https://github.com/fossas/fossa-cli)
|
2
|
+
# Visit https://fossa.io to learn more
|
3
|
+
|
4
|
+
version: 1
|
5
|
+
cli:
|
6
|
+
server: https://app.fossa.io
|
7
|
+
fetcher: custom
|
8
|
+
project: mauth-client-ruby
|
9
|
+
analyze:
|
10
|
+
modules:
|
11
|
+
- name: Gemfile
|
12
|
+
type: gem
|
13
|
+
target: .
|
14
|
+
path: .
|
data/.gitignore
CHANGED
data/.travis.yml
CHANGED
@@ -1,17 +1,32 @@
|
|
1
1
|
language: ruby
|
2
2
|
cache: bundler
|
3
|
-
sudo: false
|
4
3
|
|
5
4
|
rvm:
|
6
|
-
- 2.
|
7
|
-
- 2.
|
5
|
+
- 2.3.8
|
6
|
+
- 2.4.6
|
7
|
+
- 2.5.5
|
8
|
+
- 2.6.3
|
8
9
|
|
9
|
-
|
10
|
-
-
|
10
|
+
before_install:
|
11
|
+
- gem update --system -N > /dev/null && echo "Rubygems version $(gem --version)"
|
12
|
+
- gem install bundler --force -N -v=2.0.1 && bundle --version
|
11
13
|
|
12
|
-
|
13
|
-
|
14
|
-
-
|
15
|
-
|
14
|
+
install:
|
15
|
+
- bundle install --jobs=3 --retry=3
|
16
|
+
- |-
|
17
|
+
curl -H 'Cache-Control: no-cache' https://raw.githubusercontent.com/mdsol/fossa_ci_scripts/master/travis_ci/fossa_install.sh | bash -s -- -b $TRAVIS_BUILD_DIR
|
16
18
|
|
17
|
-
script:
|
19
|
+
script:
|
20
|
+
- bundle exec rspec
|
21
|
+
- |-
|
22
|
+
curl -H 'Cache-Control: no-cache' https://raw.githubusercontent.com/mdsol/fossa_ci_scripts/master/travis_ci/fossa_run.sh | bash -s -- -b $TRAVIS_BUILD_DIR
|
23
|
+
|
24
|
+
deploy:
|
25
|
+
provider: rubygems
|
26
|
+
gem: mauth-client
|
27
|
+
api_key:
|
28
|
+
secure: J0aPDp4+Ev2L+ZDcgpF+hAG95S4IsD6pCiDRxDWnrk79P5hq1rXoD3S39ANyqtQEQqkoVjsgoSP5JLi420aL2lYj7mhvaEOty9fK+flwUhI4nw+Gztm7EKNDNX8WKvk4fl4Zc7noIeI0uyes867hDjRQfyYvUuma7aK5H9NWzNUV9Q+KrVAoneVDGnNydxwkuuIpOFdjbVQgNpxVhVBV7Q4OLsB1KtWB9lptMwhqnyqZKex7JZ+37sojaj3oVT5ijrnAm+bR1QO1hGIOwuBako2iz+MBZHPccM4BEFsZme/7olypxv0JfeCuhqDnH1VWIFh6IZRDeLnZuX3qOhkdx4HLwxB//5O5+iapK0wh1zbnLvXqkE1dalUHyaZzStKH9xchIWl5I77Ica232OJYrpj9hhroae0p3VARF0IoZceKaH8NnMpq+nBAW4REcWrqPpe9xkRLDTNibkpaAy08vGOF2kPZkWw4lfkVBM1+wjY2xDn6wJ7VgQ1BeosbeTXbmny2TUeI22beihn894tzpCPPHiTRvKu0lV3jBfeoOAXzE333PrGm3zF9MDhg+1/iBwXVhdoOwEwBPQ/3Hu37xJn0AfRneni4StYnIkZ1Ur9Vub03J/3C3Aw6it99rQSWvC+2PzHqQhsG22VprvxlozFe1jFzdqKgvDkbkn44ltI=
|
29
|
+
on:
|
30
|
+
tags: true
|
31
|
+
repo: mdsol/mauth-client-ruby
|
32
|
+
condition: "$TRAVIS_RUBY_VERSION == 2.6.3"
|
data/CHANGELOG.md
CHANGED
@@ -1,4 +1,18 @@
|
|
1
|
-
|
1
|
+
## v4.2.0
|
2
|
+
* Drop legacy security token expiry in favor of honoring server cache headers via Faraday HTTP Cache Middleware.
|
3
|
+
|
4
|
+
## v4.1.1
|
5
|
+
- Use warning level instead of error level for logs about missing mauth header.
|
6
|
+
|
7
|
+
## v4.1.0
|
8
|
+
- Drop support for Ruby < 2.3.0
|
9
|
+
- Update development dependencies
|
10
|
+
|
11
|
+
## v4.0.4
|
12
|
+
- Restore original behavior in the proxy of forwarding of headers that begin with HTTP_ (except for HTTP_HOST) but removing the HTTP_.
|
13
|
+
|
14
|
+
## v4.0.3
|
15
|
+
- Updated signature to decode number sign (#) in requests
|
2
16
|
|
3
17
|
## v4.0.2
|
4
18
|
- Store the config data to not load the config file multiple times
|
data/CONTRIBUTING.md
CHANGED
@@ -13,8 +13,8 @@
|
|
13
13
|
|
14
14
|
To run tests, first run `bundle install`.
|
15
15
|
|
16
|
-
Next, run the tests
|
16
|
+
Next, run the tests:
|
17
17
|
|
18
18
|
```
|
19
|
-
|
19
|
+
bundle exec rspec
|
20
20
|
```
|
data/README.md
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# MAuth Client
|
2
|
-
[![Build Status](https://travis-ci.org/mdsol/mauth-client-ruby.svg)](https://travis-ci.org/mdsol/mauth-client-ruby)
|
2
|
+
[![Build Status](https://travis-ci.org/mdsol/mauth-client-ruby.svg?branch=master)](https://travis-ci.org/mdsol/mauth-client-ruby)
|
3
3
|
|
4
4
|
This gem consists of MAuth::Client, a class to manage the information needed to both sign and authenticate requests
|
5
5
|
and responses, and middlewares for Rack and Faraday which leverage the client's capabilities.
|
data/Rakefile
CHANGED
data/doc/implementations.md
CHANGED
@@ -1,6 +1,11 @@
|
|
1
|
-
# MAuth
|
1
|
+
# MAuth client implementations
|
2
2
|
|
3
3
|
- .Net: [mauth-client-dotnet](https://github.com/mdsol/mauth-client-dotnet)
|
4
|
-
-
|
4
|
+
- Clojure: [clojure-mauth-client](https://github.com/mdsol/clojure-mauth-client)
|
5
|
+
- Go: [go-mauth-client](https://github.com/mdsol/go-mauth-client)
|
6
|
+
- Java: [mauth-jvm-clients](https://github.com/mdsol/mauth-jvm-clients)
|
7
|
+
- Python:
|
8
|
+
- [requests-mauth](https://github.com/mdsol/requests-mauth)
|
9
|
+
- [flask-mauth](https://github.com/mdsol/flask-mauth)
|
5
10
|
- R: [RMauthClient](https://github.com/mdsol/RMauthClient)
|
6
11
|
- Ruby: [mauth-client-ruby](https://github.com/mdsol/mauth-client-ruby)
|
data/examples/Gemfile
CHANGED
data/examples/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: ..
|
3
3
|
specs:
|
4
|
-
mauth-client (
|
4
|
+
mauth-client (4.1.0)
|
5
5
|
coderay (~> 1.0)
|
6
6
|
dice_bag (>= 0.9, < 2.0)
|
7
7
|
faraday (~> 0.7)
|
@@ -12,30 +12,30 @@ PATH
|
|
12
12
|
GEM
|
13
13
|
remote: https://rubygems.org/
|
14
14
|
specs:
|
15
|
-
coderay (1.1.
|
16
|
-
dice_bag (1.
|
15
|
+
coderay (1.1.2)
|
16
|
+
dice_bag (1.3.1)
|
17
17
|
diff-lcs (~> 1.0)
|
18
18
|
rake
|
19
19
|
thor (~> 0.0)
|
20
|
-
diff-lcs (1.
|
21
|
-
faraday (0.
|
20
|
+
diff-lcs (1.3)
|
21
|
+
faraday (0.15.3)
|
22
22
|
multipart-post (>= 1.2, < 3)
|
23
|
-
faraday_middleware (0.
|
24
|
-
faraday (>= 0.7.4, < 0
|
23
|
+
faraday_middleware (0.12.2)
|
24
|
+
faraday (>= 0.7.4, < 1.0)
|
25
25
|
multipart-post (2.0.0)
|
26
|
-
rack (2.0.
|
27
|
-
rake (
|
28
|
-
term-ansicolor (1.
|
26
|
+
rack (2.0.6)
|
27
|
+
rake (12.3.1)
|
28
|
+
term-ansicolor (1.7.0)
|
29
29
|
tins (~> 1.0)
|
30
|
-
thor (0.
|
31
|
-
tins (1.
|
30
|
+
thor (0.20.3)
|
31
|
+
tins (1.20.2)
|
32
32
|
|
33
33
|
PLATFORMS
|
34
34
|
ruby
|
35
35
|
|
36
36
|
DEPENDENCIES
|
37
|
-
faraday (~> 0.
|
37
|
+
faraday (~> 0.15)
|
38
38
|
mauth-client!
|
39
39
|
|
40
40
|
BUNDLED WITH
|
41
|
-
1.
|
41
|
+
1.17.1
|
data/lib/mauth/client.rb
CHANGED
@@ -7,6 +7,8 @@ require 'mauth/core_ext'
|
|
7
7
|
require 'mauth/autoload'
|
8
8
|
require 'mauth/dice_bag/mauth_templates'
|
9
9
|
require 'mauth/version'
|
10
|
+
require 'faraday-http-cache'
|
11
|
+
require 'oj'
|
10
12
|
|
11
13
|
module MAuth
|
12
14
|
class Client
|
@@ -116,6 +118,11 @@ module MAuth
|
|
116
118
|
class InauthenticError < StandardError
|
117
119
|
end
|
118
120
|
|
121
|
+
# Used when the incoming request does not contain any mAuth related information
|
122
|
+
class MauthNotPresent < StandardError
|
123
|
+
end
|
124
|
+
|
125
|
+
|
119
126
|
# required information for signing was missing
|
120
127
|
class UnableToSignError < StandardError
|
121
128
|
end
|
@@ -288,7 +295,7 @@ module MAuth
|
|
288
295
|
begin
|
289
296
|
authenticate!(object)
|
290
297
|
true
|
291
|
-
rescue InauthenticError
|
298
|
+
rescue InauthenticError, MauthNotPresent
|
292
299
|
false
|
293
300
|
end
|
294
301
|
end
|
@@ -299,13 +306,14 @@ module MAuth
|
|
299
306
|
time_valid!(object)
|
300
307
|
token_valid!(object)
|
301
308
|
signature_valid!(object)
|
302
|
-
rescue
|
303
|
-
logger.
|
304
|
-
|
309
|
+
rescue MauthNotPresent => e
|
310
|
+
logger.warn "mAuth signature not present on #{object.class}. Exception: #{e.message}"
|
311
|
+
raise
|
312
|
+
rescue InauthenticError => e
|
313
|
+
logger.error "mAuth signature authentication failed for #{object.class}. Exception: #{e.message}"
|
305
314
|
raise
|
306
|
-
rescue UnableToAuthenticateError
|
307
|
-
logger.error "Unable to authenticate with MAuth.
|
308
|
-
$!.message.split("\n").each { |l| logger.error "\t#{l}" }
|
315
|
+
rescue UnableToAuthenticateError => e
|
316
|
+
logger.error "Unable to authenticate with MAuth for #{object.class}. Exception: #{e.message}"
|
309
317
|
raise
|
310
318
|
end
|
311
319
|
|
@@ -315,27 +323,25 @@ module MAuth
|
|
315
323
|
def log_authentication_request(object)
|
316
324
|
object_app_uuid = object.signature_app_uuid || '[none provided]'
|
317
325
|
logger.info "Mauth-client attempting to authenticate request from app with mauth app uuid #{object_app_uuid} to app with mauth app uuid #{client_app_uuid}."
|
318
|
-
rescue # don't let a failed attempt to log disrupt the rest of the action
|
319
|
-
logger.error "Mauth-client failed to log information about its attempts to authenticate the current request because #{$!}"
|
320
326
|
end
|
321
327
|
|
322
328
|
def authentication_present!(object)
|
323
329
|
if object.x_mws_authentication.nil? || object.x_mws_authentication !~ /\S/
|
324
|
-
raise
|
330
|
+
raise MauthNotPresent, "Authentication Failed. No mAuth signature present; X-MWS-Authentication header is blank."
|
325
331
|
end
|
326
332
|
end
|
327
333
|
|
328
334
|
def time_valid!(object, now = Time.now)
|
329
335
|
if object.x_mws_time.nil?
|
330
|
-
raise InauthenticError, "Time verification failed
|
336
|
+
raise InauthenticError, "Time verification failed. No x-mws-time present."
|
331
337
|
elsif !(-ALLOWED_DRIFT_SECONDS..ALLOWED_DRIFT_SECONDS).cover?(now.to_i - object.x_mws_time.to_i)
|
332
|
-
raise InauthenticError, "Time verification failed
|
338
|
+
raise InauthenticError, "Time verification failed. #{object.x_mws_time} not within #{ALLOWED_DRIFT_SECONDS} of #{now}"
|
333
339
|
end
|
334
340
|
end
|
335
341
|
|
336
342
|
def token_valid!(object)
|
337
343
|
unless object.signature_token == MWS_TOKEN
|
338
|
-
raise InauthenticError, "Token verification failed
|
344
|
+
raise InauthenticError, "Token verification failed. Expected #{MWS_TOKEN.inspect}; token was #{object.signature_token}"
|
339
345
|
end
|
340
346
|
end
|
341
347
|
end
|
@@ -364,8 +370,7 @@ module MAuth
|
|
364
370
|
expected_for_percent_reencoding = object.string_to_sign(time: object.x_mws_time, app_uuid: object.signature_app_uuid)
|
365
371
|
|
366
372
|
# do a moderately complex Euresource-style reencoding of the path
|
367
|
-
object.attributes_for_signing[:request_url] =
|
368
|
-
object.attributes_for_signing[:request_url].gsub!('%2F', '/') # ...and then 'simply' decode the %2F's back into /'s, just like Euresource kind of does!
|
373
|
+
object.attributes_for_signing[:request_url] = euresource_escape(original_request_uri.to_s)
|
369
374
|
expected_euresource_style_reencoding = object.string_to_sign(time: object.x_mws_time, app_uuid: object.signature_app_uuid)
|
370
375
|
|
371
376
|
# reset the object original request_uri, just in case we need it again
|
@@ -383,6 +388,13 @@ module MAuth
|
|
383
388
|
end
|
384
389
|
end
|
385
390
|
|
391
|
+
# Note: RFC 3986 (https://www.ietf.org/rfc/rfc3986.txt) reserves the forward slash "/"
|
392
|
+
# and number sign "#" as component delimiters. Since these are valid URI components,
|
393
|
+
# they are decoded back into characters here to avoid signature invalidation
|
394
|
+
def euresource_escape(str)
|
395
|
+
CGI.escape(str).gsub(/%2F|%23/, "%2F" => "/", "%23" => "#")
|
396
|
+
end
|
397
|
+
|
386
398
|
def retrieve_public_key(app_uuid)
|
387
399
|
retrieve_security_token(app_uuid)['security_token']['public_key_str']
|
388
400
|
end
|
@@ -395,12 +407,7 @@ module MAuth
|
|
395
407
|
@security_token_cacher ||= SecurityTokenCacher.new(self)
|
396
408
|
end
|
397
409
|
class SecurityTokenCacher
|
398
|
-
|
399
|
-
CACHE_LIFE = 60
|
400
|
-
def expired?
|
401
|
-
create_time + CACHE_LIFE < Time.now
|
402
|
-
end
|
403
|
-
end
|
410
|
+
|
404
411
|
def initialize(mauth_client)
|
405
412
|
@mauth_client = mauth_client
|
406
413
|
# TODO: should this be UnableToSignError?
|
@@ -411,7 +418,7 @@ module MAuth
|
|
411
418
|
end
|
412
419
|
|
413
420
|
def get(app_uuid)
|
414
|
-
if !@cache[app_uuid]
|
421
|
+
if !@cache[app_uuid]
|
415
422
|
# url-encode the app_uuid to prevent trickery like escaping upward with ../../ in a malicious
|
416
423
|
# app_uuid - probably not exploitable, but this is the right way to do it anyway.
|
417
424
|
# use UNRESERVED instead of UNSAFE (the default) as UNSAFE doesn't include /
|
@@ -422,13 +429,8 @@ module MAuth
|
|
422
429
|
raise UnableToAuthenticateError, "mAuth service did not respond; received #{$!.class}: #{$!.message}"
|
423
430
|
end
|
424
431
|
if response.status == 200
|
425
|
-
begin
|
426
|
-
security_token = JSON.parse(response.body)
|
427
|
-
rescue JSON::ParserError
|
428
|
-
raise UnableToAuthenticateError, "mAuth service responded with unparseable json: #{response.body}\n#{$!.class}: #{$!.message}"
|
429
|
-
end
|
430
432
|
@cache_write_lock.synchronize do
|
431
|
-
@cache[app_uuid] =
|
433
|
+
@cache[app_uuid] = security_token_from(response.body)
|
432
434
|
end
|
433
435
|
elsif response.status == 404
|
434
436
|
# signing with a key mAuth doesn't know about is considered inauthentic
|
@@ -437,11 +439,19 @@ module MAuth
|
|
437
439
|
@mauth_client.send(:mauth_service_response_error, response)
|
438
440
|
end
|
439
441
|
end
|
440
|
-
@cache[app_uuid]
|
442
|
+
@cache[app_uuid]
|
441
443
|
end
|
442
444
|
|
443
445
|
private
|
444
446
|
|
447
|
+
def security_token_from(response_body)
|
448
|
+
JSON.parse response_body
|
449
|
+
rescue JSON::ParserError => e
|
450
|
+
msg = "mAuth service responded with unparseable json: #{response_body}\n#{e.class}: #{e.message}"
|
451
|
+
@mauth_client.logger.error("Unable to authenticate with MAuth. Exception #{msg}")
|
452
|
+
raise UnableToAuthenticateError, msg
|
453
|
+
end
|
454
|
+
|
445
455
|
def signed_mauth_connection
|
446
456
|
require 'faraday'
|
447
457
|
require 'mauth/faraday'
|
@@ -449,6 +459,7 @@ module MAuth
|
|
449
459
|
@signed_mauth_connection ||= ::Faraday.new(@mauth_client.mauth_baseurl, @mauth_client.faraday_options) do |builder|
|
450
460
|
builder.use MAuth::Faraday::MAuthClientUserAgent
|
451
461
|
builder.use MAuth::Faraday::RequestSigner, 'mauth_client' => @mauth_client
|
462
|
+
builder.use :http_cache, serializer: Oj, logger: MAuth::Client.new.logger, shared_cache: false
|
452
463
|
builder.adapter ::Faraday.default_adapter
|
453
464
|
end
|
454
465
|
end
|
data/lib/mauth/proxy.rb
CHANGED
@@ -55,8 +55,8 @@ module MAuth
|
|
55
55
|
request_env['rack.input'].rewind
|
56
56
|
request_headers = {}
|
57
57
|
request_env.each do |k, v|
|
58
|
-
if k.start_with?('HTTP_') &&
|
59
|
-
name =
|
58
|
+
if k.start_with?('HTTP_') && k != 'HTTP_HOST'
|
59
|
+
name = k.sub(/\AHTTP_/, '')
|
60
60
|
request_headers[name] = v
|
61
61
|
end
|
62
62
|
end
|
data/lib/mauth/version.rb
CHANGED
data/mauth-client.gemspec
CHANGED
@@ -11,26 +11,27 @@ Gem::Specification.new do |spec|
|
|
11
11
|
spec.description = 'Client for signing and authentication of requests and responses with mAuth authentication. Includes middleware for Rack and Faraday for incoming and outgoing requests and responses.'
|
12
12
|
spec.homepage = 'https://github.com/mdsol/mauth-client-ruby'
|
13
13
|
spec.license = 'MIT'
|
14
|
-
spec.required_ruby_version = '>= 2.
|
14
|
+
spec.required_ruby_version = '>= 2.3.0'
|
15
15
|
|
16
16
|
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
17
17
|
spec.bindir = 'exe'
|
18
18
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
19
19
|
spec.require_paths = ['lib']
|
20
20
|
|
21
|
-
spec.add_dependency 'faraday', '
|
22
|
-
spec.add_dependency 'faraday_middleware', '
|
21
|
+
spec.add_dependency 'faraday', '>= 0.17', '< 1.0'
|
22
|
+
spec.add_dependency 'faraday_middleware', '>= 0.9', '< 2.0'
|
23
|
+
spec.add_dependency 'faraday-http-cache', '>= 2.0', '< 3.0'
|
24
|
+
spec.add_dependency 'oj', '~> 3.0'
|
23
25
|
spec.add_dependency 'term-ansicolor', '~> 1.0'
|
24
26
|
spec.add_dependency 'coderay', '~> 1.0'
|
25
27
|
spec.add_dependency 'rack'
|
26
28
|
spec.add_dependency 'dice_bag', '>= 0.9', '< 2.0'
|
27
29
|
|
28
|
-
spec.add_development_dependency 'bundler', '
|
29
|
-
spec.add_development_dependency '
|
30
|
-
spec.add_development_dependency 'rack-test', '~>
|
31
|
-
spec.add_development_dependency 'rake', '~>
|
32
|
-
spec.add_development_dependency 'rspec', '~> 3.
|
33
|
-
spec.add_development_dependency 'simplecov', '~> 0.
|
34
|
-
spec.add_development_dependency 'timecop', '~> 0.
|
35
|
-
spec.add_development_dependency 'uuidtools', '~> 2.1.5'
|
30
|
+
spec.add_development_dependency 'bundler', '>= 1.17'
|
31
|
+
spec.add_development_dependency 'byebug'
|
32
|
+
spec.add_development_dependency 'rack-test', '~> 1.1.0'
|
33
|
+
spec.add_development_dependency 'rake', '~> 12.0'
|
34
|
+
spec.add_development_dependency 'rspec', '~> 3.8'
|
35
|
+
spec.add_development_dependency 'simplecov', '~> 0.16'
|
36
|
+
spec.add_development_dependency 'timecop', '~> 0.9'
|
36
37
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mauth-client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.0
|
4
|
+
version: 4.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matthew Szenher
|
@@ -11,36 +11,82 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: exe
|
13
13
|
cert_chain: []
|
14
|
-
date:
|
14
|
+
date: 2021-06-16 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: faraday
|
18
18
|
requirement: !ruby/object:Gem::Requirement
|
19
19
|
requirements:
|
20
|
-
- - "
|
20
|
+
- - ">="
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version: '0.
|
22
|
+
version: '0.17'
|
23
|
+
- - "<"
|
24
|
+
- !ruby/object:Gem::Version
|
25
|
+
version: '1.0'
|
23
26
|
type: :runtime
|
24
27
|
prerelease: false
|
25
28
|
version_requirements: !ruby/object:Gem::Requirement
|
26
29
|
requirements:
|
27
|
-
- - "
|
30
|
+
- - ">="
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0.17'
|
33
|
+
- - "<"
|
28
34
|
- !ruby/object:Gem::Version
|
29
|
-
version: '0
|
35
|
+
version: '1.0'
|
30
36
|
- !ruby/object:Gem::Dependency
|
31
37
|
name: faraday_middleware
|
32
38
|
requirement: !ruby/object:Gem::Requirement
|
33
39
|
requirements:
|
34
|
-
- - "
|
40
|
+
- - ">="
|
35
41
|
- !ruby/object:Gem::Version
|
36
42
|
version: '0.9'
|
43
|
+
- - "<"
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '2.0'
|
37
46
|
type: :runtime
|
38
47
|
prerelease: false
|
39
48
|
version_requirements: !ruby/object:Gem::Requirement
|
40
49
|
requirements:
|
41
|
-
- - "
|
50
|
+
- - ">="
|
42
51
|
- !ruby/object:Gem::Version
|
43
52
|
version: '0.9'
|
53
|
+
- - "<"
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: '2.0'
|
56
|
+
- !ruby/object:Gem::Dependency
|
57
|
+
name: faraday-http-cache
|
58
|
+
requirement: !ruby/object:Gem::Requirement
|
59
|
+
requirements:
|
60
|
+
- - ">="
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '2.0'
|
63
|
+
- - "<"
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: '3.0'
|
66
|
+
type: :runtime
|
67
|
+
prerelease: false
|
68
|
+
version_requirements: !ruby/object:Gem::Requirement
|
69
|
+
requirements:
|
70
|
+
- - ">="
|
71
|
+
- !ruby/object:Gem::Version
|
72
|
+
version: '2.0'
|
73
|
+
- - "<"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '3.0'
|
76
|
+
- !ruby/object:Gem::Dependency
|
77
|
+
name: oj
|
78
|
+
requirement: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '3.0'
|
83
|
+
type: :runtime
|
84
|
+
prerelease: false
|
85
|
+
version_requirements: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '3.0'
|
44
90
|
- !ruby/object:Gem::Dependency
|
45
91
|
name: term-ansicolor
|
46
92
|
requirement: !ruby/object:Gem::Requirement
|
@@ -107,114 +153,100 @@ dependencies:
|
|
107
153
|
name: bundler
|
108
154
|
requirement: !ruby/object:Gem::Requirement
|
109
155
|
requirements:
|
110
|
-
- - "
|
156
|
+
- - ">="
|
111
157
|
- !ruby/object:Gem::Version
|
112
|
-
version: '1.
|
158
|
+
version: '1.17'
|
113
159
|
type: :development
|
114
160
|
prerelease: false
|
115
161
|
version_requirements: !ruby/object:Gem::Requirement
|
116
162
|
requirements:
|
117
|
-
- - "
|
163
|
+
- - ">="
|
118
164
|
- !ruby/object:Gem::Version
|
119
|
-
version: '1.
|
165
|
+
version: '1.17'
|
120
166
|
- !ruby/object:Gem::Dependency
|
121
|
-
name:
|
167
|
+
name: byebug
|
122
168
|
requirement: !ruby/object:Gem::Requirement
|
123
169
|
requirements:
|
124
|
-
- - "
|
170
|
+
- - ">="
|
125
171
|
- !ruby/object:Gem::Version
|
126
|
-
version: '0
|
172
|
+
version: '0'
|
127
173
|
type: :development
|
128
174
|
prerelease: false
|
129
175
|
version_requirements: !ruby/object:Gem::Requirement
|
130
176
|
requirements:
|
131
|
-
- - "
|
177
|
+
- - ">="
|
132
178
|
- !ruby/object:Gem::Version
|
133
|
-
version: '0
|
179
|
+
version: '0'
|
134
180
|
- !ruby/object:Gem::Dependency
|
135
181
|
name: rack-test
|
136
182
|
requirement: !ruby/object:Gem::Requirement
|
137
183
|
requirements:
|
138
184
|
- - "~>"
|
139
185
|
- !ruby/object:Gem::Version
|
140
|
-
version:
|
186
|
+
version: 1.1.0
|
141
187
|
type: :development
|
142
188
|
prerelease: false
|
143
189
|
version_requirements: !ruby/object:Gem::Requirement
|
144
190
|
requirements:
|
145
191
|
- - "~>"
|
146
192
|
- !ruby/object:Gem::Version
|
147
|
-
version:
|
193
|
+
version: 1.1.0
|
148
194
|
- !ruby/object:Gem::Dependency
|
149
195
|
name: rake
|
150
196
|
requirement: !ruby/object:Gem::Requirement
|
151
197
|
requirements:
|
152
198
|
- - "~>"
|
153
199
|
- !ruby/object:Gem::Version
|
154
|
-
version: '
|
200
|
+
version: '12.0'
|
155
201
|
type: :development
|
156
202
|
prerelease: false
|
157
203
|
version_requirements: !ruby/object:Gem::Requirement
|
158
204
|
requirements:
|
159
205
|
- - "~>"
|
160
206
|
- !ruby/object:Gem::Version
|
161
|
-
version: '
|
207
|
+
version: '12.0'
|
162
208
|
- !ruby/object:Gem::Dependency
|
163
209
|
name: rspec
|
164
210
|
requirement: !ruby/object:Gem::Requirement
|
165
211
|
requirements:
|
166
212
|
- - "~>"
|
167
213
|
- !ruby/object:Gem::Version
|
168
|
-
version: '3.
|
214
|
+
version: '3.8'
|
169
215
|
type: :development
|
170
216
|
prerelease: false
|
171
217
|
version_requirements: !ruby/object:Gem::Requirement
|
172
218
|
requirements:
|
173
219
|
- - "~>"
|
174
220
|
- !ruby/object:Gem::Version
|
175
|
-
version: '3.
|
221
|
+
version: '3.8'
|
176
222
|
- !ruby/object:Gem::Dependency
|
177
223
|
name: simplecov
|
178
224
|
requirement: !ruby/object:Gem::Requirement
|
179
225
|
requirements:
|
180
226
|
- - "~>"
|
181
227
|
- !ruby/object:Gem::Version
|
182
|
-
version: 0.
|
228
|
+
version: '0.16'
|
183
229
|
type: :development
|
184
230
|
prerelease: false
|
185
231
|
version_requirements: !ruby/object:Gem::Requirement
|
186
232
|
requirements:
|
187
233
|
- - "~>"
|
188
234
|
- !ruby/object:Gem::Version
|
189
|
-
version: 0.
|
235
|
+
version: '0.16'
|
190
236
|
- !ruby/object:Gem::Dependency
|
191
237
|
name: timecop
|
192
238
|
requirement: !ruby/object:Gem::Requirement
|
193
239
|
requirements:
|
194
240
|
- - "~>"
|
195
241
|
- !ruby/object:Gem::Version
|
196
|
-
version: 0.
|
197
|
-
type: :development
|
198
|
-
prerelease: false
|
199
|
-
version_requirements: !ruby/object:Gem::Requirement
|
200
|
-
requirements:
|
201
|
-
- - "~>"
|
202
|
-
- !ruby/object:Gem::Version
|
203
|
-
version: 0.8.1
|
204
|
-
- !ruby/object:Gem::Dependency
|
205
|
-
name: uuidtools
|
206
|
-
requirement: !ruby/object:Gem::Requirement
|
207
|
-
requirements:
|
208
|
-
- - "~>"
|
209
|
-
- !ruby/object:Gem::Version
|
210
|
-
version: 2.1.5
|
242
|
+
version: '0.9'
|
211
243
|
type: :development
|
212
244
|
prerelease: false
|
213
245
|
version_requirements: !ruby/object:Gem::Requirement
|
214
246
|
requirements:
|
215
247
|
- - "~>"
|
216
248
|
- !ruby/object:Gem::Version
|
217
|
-
version:
|
249
|
+
version: '0.9'
|
218
250
|
description: Client for signing and authentication of requests and responses with
|
219
251
|
mAuth authentication. Includes middleware for Rack and Faraday for incoming and
|
220
252
|
outgoing requests and responses.
|
@@ -226,6 +258,7 @@ executables:
|
|
226
258
|
extensions: []
|
227
259
|
extra_rdoc_files: []
|
228
260
|
files:
|
261
|
+
- ".fossa.yml"
|
229
262
|
- ".gitignore"
|
230
263
|
- ".travis.yml"
|
231
264
|
- ".yardopts"
|
@@ -247,7 +280,6 @@ files:
|
|
247
280
|
- examples/mauth_key
|
248
281
|
- exe/mauth-client
|
249
282
|
- exe/mauth-proxy
|
250
|
-
- gemfiles/ruby_2.1.gemfile
|
251
283
|
- lib/mauth-client.rb
|
252
284
|
- lib/mauth/autoload.rb
|
253
285
|
- lib/mauth/client.rb
|
@@ -277,15 +309,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
277
309
|
requirements:
|
278
310
|
- - ">="
|
279
311
|
- !ruby/object:Gem::Version
|
280
|
-
version: 2.
|
312
|
+
version: 2.3.0
|
281
313
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
282
314
|
requirements:
|
283
315
|
- - ">="
|
284
316
|
- !ruby/object:Gem::Version
|
285
317
|
version: '0'
|
286
318
|
requirements: []
|
287
|
-
|
288
|
-
rubygems_version: 2.6.8
|
319
|
+
rubygems_version: 3.0.8
|
289
320
|
signing_key:
|
290
321
|
specification_version: 4
|
291
322
|
summary: Sign and authenticate requests and responses with mAuth authentication.
|