mauth-client 4.0.2 → 4.2.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/.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
|
-
[](https://travis-ci.org/mdsol/mauth-client-ruby)
|
|
2
|
+
[](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.
|