firebase_id_token 2.3.2 → 2.5.1
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 +4 -4
- data/.travis.yml +2 -2
- data/CHANGELOG.md +127 -0
- data/README.md +1 -1
- data/docker-compose.yml +9 -0
- data/firebase_id_token.gemspec +2 -2
- data/lib/firebase_id_token/certificates.rb +25 -4
- data/lib/firebase_id_token/exceptions/certificate_not_found.rb +8 -0
- data/lib/firebase_id_token/signature.rb +33 -13
- data/lib/firebase_id_token/testing/certificates.rb +2 -2
- data/lib/firebase_id_token/version.rb +1 -1
- data/lib/firebase_id_token.rb +2 -1
- data/spec/firebase_id_token/certificates_spec.rb +22 -0
- data/spec/firebase_id_token/signature_spec.rb +24 -4
- metadata +49 -34
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 789eeab7c0ec306d0a64b2c7564f590fdf54d2d93891d8c15f6797a49dada26a
|
4
|
+
data.tar.gz: 236c1161cb5141fa7b1658660463431715a3a449c48e94fbc3424df92101dd7a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8e5d277ce83b6deb7d9434d62d4545b405d6bd7a7248588fca7b21209cfac8181bd1593d96b11119a64652a76f4d3463f28ab0645e2c3d3f5c3d5cce8a0b4644
|
7
|
+
data.tar.gz: 8eddfe41e764ce2ab21b797fd27853d96466cde7339bd7ef56021f1d835e92dd388cdabb0f027a112abce83a1d5cbc0b6a36e24332e9bc453d67ad9a9f3f29df
|
data/.travis.yml
CHANGED
data/CHANGELOG.md
ADDED
@@ -0,0 +1,127 @@
|
|
1
|
+
# Changelog
|
2
|
+
All notable changes to this project will be documented in this file.
|
3
|
+
|
4
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
5
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
6
|
+
|
7
|
+
## [Unreleased]
|
8
|
+
|
9
|
+
## [2.5.1] - 2022-08-15
|
10
|
+
|
11
|
+
### Fixed
|
12
|
+
- "[New caching doesn't honor request! calls](https://github.com/fschuindt/firebase_id_token/issues/35)", by reverting "[Caching certificates on memory.](https://github.com/fschuindt/firebase_id_token/pull/33)", PR #33.
|
13
|
+
|
14
|
+
## [2.5.0] - 2022-04-13
|
15
|
+
|
16
|
+
### Fixed
|
17
|
+
- Local Code Execution through Argument Injection via dash leading git url parameter in Gemfile [CVE-2021-43809](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-43809).
|
18
|
+
- Dependency Confusion in Bundler [CVE-2020-36327](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-36327).
|
19
|
+
- Insecure path handling in Bundler [CVE-2019-3881](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-3881).
|
20
|
+
|
21
|
+
### Changed
|
22
|
+
- Using Bundler 2.3.11.
|
23
|
+
- Using `Time.current` instead of `Time.now` to work with timezones [PR 34](https://github.com/fschuindt/firebase_id_token/pull/34).
|
24
|
+
- Caching certificates on memory using `Thread` to avoid unnecessary calls into Redis [PR 33](https://github.com/fschuindt/firebase_id_token/pull/33).
|
25
|
+
|
26
|
+
## [2.4.0] - 2020-05-02
|
27
|
+
|
28
|
+
### Fixed
|
29
|
+
- Rake development dependency vulnerability [CVE-2020-8130](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-8130).
|
30
|
+
|
31
|
+
### Changed
|
32
|
+
- Using Bundler 1.17.2.
|
33
|
+
|
34
|
+
### Added
|
35
|
+
- Ability to raise errors when verifying tokens.
|
36
|
+
- `FirebaseIdToken::Certificates.find!` method.
|
37
|
+
- `FirebaseIdToken::Signatures.verify!` method.
|
38
|
+
- `FirebaseIdToken::Exceptions::CertificateNotFound` exception.
|
39
|
+
- `:raise_error` option to `FirebaseIdToken::Signature.verify`.
|
40
|
+
- `CHANGELOG.md` file.
|
41
|
+
|
42
|
+
## [2.3.2] - 2020-02-15
|
43
|
+
|
44
|
+
### Fixed
|
45
|
+
- Certificate fixture not accessible when packing Gem into Rails application.
|
46
|
+
|
47
|
+
### Changed
|
48
|
+
- Bumped Bundler version to 1.14.
|
49
|
+
|
50
|
+
## [2.3.1] - 2019-08-13
|
51
|
+
|
52
|
+
### Fixed
|
53
|
+
- Certificate fixture reading issue.
|
54
|
+
|
55
|
+
### Added
|
56
|
+
- Test mode.
|
57
|
+
- Test mode documentation.
|
58
|
+
|
59
|
+
## [2.3.0] - 2018-06-18
|
60
|
+
|
61
|
+
### Changed
|
62
|
+
- Started to use [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
63
|
+
- Runtime dependencies versions upgraded.
|
64
|
+
- Use Redis `>= 3.3.3`.
|
65
|
+
|
66
|
+
## [2.2.0] - 2018-05-21
|
67
|
+
*Nothing tracked, release skipped.*
|
68
|
+
|
69
|
+
## [2.1.0] - 2018-04-09
|
70
|
+
|
71
|
+
### Fixed
|
72
|
+
- `FirebaseIdToken::Signature.verify` now returns `nil` for newly issued tokens.
|
73
|
+
|
74
|
+
## [2.0.0] - 2017-12-09
|
75
|
+
|
76
|
+
### Fixed
|
77
|
+
- Typo on Rake task `force_request` name.
|
78
|
+
|
79
|
+
## [1.3.0] - 2017-09-15
|
80
|
+
|
81
|
+
### Changed
|
82
|
+
- Renamed `Certificates.request_anyway` to `Certificates.request!` (`Certificates.request_anyway` was kept for backwards compatibility.
|
83
|
+
|
84
|
+
### Fixed
|
85
|
+
- Documentaiton typos.
|
86
|
+
- Initializer typos.
|
87
|
+
|
88
|
+
## [1.2.2] - 2017-04-29
|
89
|
+
|
90
|
+
### Changed
|
91
|
+
- Recommended people to use cron tasks instead of background jobs.
|
92
|
+
- Set certificates TTL based on cache-control's max-age.
|
93
|
+
- Documentation now warns about request during application start in Rails.
|
94
|
+
|
95
|
+
### Fixed
|
96
|
+
- Documentation typos.
|
97
|
+
|
98
|
+
## [1.2.1] - 2017-04-27
|
99
|
+
|
100
|
+
### Changed
|
101
|
+
- Small improvements on documentation.
|
102
|
+
|
103
|
+
## [1.2.0] - 2017-04-26
|
104
|
+
|
105
|
+
### Changed
|
106
|
+
- The Gem was marked as "ready to use".
|
107
|
+
|
108
|
+
## [1.1.0] - 2017-04-26
|
109
|
+
*Nothing tracked.*
|
110
|
+
|
111
|
+
## [1.0.0] - 2017-04-26
|
112
|
+
*Version removed.*
|
113
|
+
|
114
|
+
## [0.1.0] - 2017-04-23
|
115
|
+
*Version removed.*
|
116
|
+
|
117
|
+
[2.5.1]: https://github.com/fschuindt/firebase_id_token/compare/2.5.0...2.5.1
|
118
|
+
[2.5.0]: https://github.com/fschuindt/firebase_id_token/compare/2.4.0...2.5.0
|
119
|
+
[2.4.0]: https://github.com/fschuindt/firebase_id_token/compare/2.3.2...2.4.0
|
120
|
+
[2.3.2]: https://github.com/fschuindt/firebase_id_token/compare/2.3.1...2.3.2
|
121
|
+
[2.3.1]: https://github.com/fschuindt/firebase_id_token/compare/2.3.0...2.3.1
|
122
|
+
[2.3.0]: https://github.com/fschuindt/firebase_id_token/compare/2.0.0...2.3.0
|
123
|
+
[2.1.0]: https://github.com/fschuindt/firebase_id_token/compare/2.0.0...2.1.0
|
124
|
+
[2.0.0]: https://github.com/fschuindt/firebase_id_token/compare/1.3.0...2.0.0
|
125
|
+
[1.3.0]: https://github.com/fschuindt/firebase_id_token/compare/1.2.2...1.3.0
|
126
|
+
[1.2.2]: https://github.com/fschuindt/firebase_id_token/compare/1.2.1...1.2.2
|
127
|
+
[1.2.1]: https://github.com/fschuindt/firebase_id_token/compare/1.2.0...1.2.1
|
data/README.md
CHANGED
data/docker-compose.yml
ADDED
data/firebase_id_token.gemspec
CHANGED
@@ -22,8 +22,8 @@ Gem::Specification.new do |spec|
|
|
22
22
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
23
23
|
spec.require_paths = ['lib']
|
24
24
|
|
25
|
-
spec.add_development_dependency 'bundler'
|
26
|
-
spec.add_development_dependency 'rake', '~>
|
25
|
+
spec.add_development_dependency 'bundler', '~> 2.3', '>= 2.3.11'
|
26
|
+
spec.add_development_dependency 'rake', '~> 12.3', '>= 12.3.3'
|
27
27
|
spec.add_development_dependency 'rspec', '~> 3.0'
|
28
28
|
spec.add_development_dependency 'redcarpet', '~> 3.4', '>= 3.4.0'
|
29
29
|
spec.add_development_dependency 'simplecov', '~> 0.14.1'
|
@@ -111,13 +111,34 @@ module FirebaseIdToken
|
|
111
111
|
# FirebaseIdToken::Certificates.request
|
112
112
|
# cert = FirebaseIdToken::Certificates.find "1d6d01f4w7d54c7[...]"
|
113
113
|
# #=> <OpenSSL::X509::Certificate: subject=#<OpenSSL [...]
|
114
|
-
def self.find(kid)
|
114
|
+
def self.find(kid, raise_error: false)
|
115
115
|
certs = new.local_certs
|
116
116
|
raise Exceptions::NoCertificatesError if certs.empty?
|
117
117
|
|
118
|
-
if certs[kid]
|
119
|
-
|
120
|
-
|
118
|
+
return OpenSSL::X509::Certificate.new certs[kid] if certs[kid]
|
119
|
+
|
120
|
+
return unless raise_error
|
121
|
+
|
122
|
+
raise Exceptions::CertificateNotFound,
|
123
|
+
"Unable to find a certificate with `#{kid}`."
|
124
|
+
end
|
125
|
+
|
126
|
+
# Returns a `OpenSSL::X509::Certificate` object of the requested Key ID
|
127
|
+
# (KID) if there's one.
|
128
|
+
#
|
129
|
+
# @raise {Exceptions::CertificateNotFound} if it cannot be found.
|
130
|
+
#
|
131
|
+
# @raise {Exceptions::NoCertificatesError} if the Redis certificates
|
132
|
+
# database is empty.
|
133
|
+
#
|
134
|
+
# @param [String] kid Key ID
|
135
|
+
# @return [OpenSSL::X509::Certificate]
|
136
|
+
# @example
|
137
|
+
# FirebaseIdToken::Certificates.request
|
138
|
+
# cert = FirebaseIdToken::Certificates.find! "1d6d01f4w7d54c7[...]"
|
139
|
+
# #=> <OpenSSL::X509::Certificate: subject=#<OpenSSL [...]
|
140
|
+
def self.find!(kid)
|
141
|
+
find(kid, raise_error: true)
|
121
142
|
end
|
122
143
|
|
123
144
|
# Returns the current certificates TTL (Time-To-Live) in seconds. *Zero
|
@@ -42,9 +42,25 @@ module FirebaseIdToken
|
|
42
42
|
# Note that it will raise a {Exceptions::NoCertificatesError} if the Redis
|
43
43
|
# certificates database is empty. Ensure to call {Certificates.request}
|
44
44
|
# before, ideally in a background job if you are using Rails.
|
45
|
+
#
|
46
|
+
# If you would like this to raise and error, rather than silently failing,
|
47
|
+
# you can with the `raise_error` parameter. Example:
|
48
|
+
#
|
49
|
+
# FirebaseIdToken::Signature
|
50
|
+
# .verify(token, raise_error: Rails.env.development?)
|
51
|
+
#
|
52
|
+
# @param raise_error [Boolean] default: false
|
45
53
|
# @return [nil, Hash]
|
46
|
-
def self.verify(jwt_token)
|
47
|
-
new(jwt_token).verify
|
54
|
+
def self.verify(jwt_token, raise_error: false)
|
55
|
+
new(jwt_token, raise_error: raise_error).verify
|
56
|
+
end
|
57
|
+
|
58
|
+
# Equivalent to `.verify(jwt_token, raise_error: true)`.
|
59
|
+
#
|
60
|
+
# @see {Signature.verify}
|
61
|
+
# @return [Hash]
|
62
|
+
def self.verify!(jwt_token)
|
63
|
+
new(jwt_token, raise_error: true).verify
|
48
64
|
end
|
49
65
|
|
50
66
|
attr_accessor :firebase_id_token_certificates
|
@@ -52,21 +68,21 @@ module FirebaseIdToken
|
|
52
68
|
# Loads attributes: `:project_ids` from {FirebaseIdToken::Configuration},
|
53
69
|
# and `:kid`, `:jwt_token` from the related `jwt_token`.
|
54
70
|
# @param [String] jwt_token Firebase ID Token
|
55
|
-
def initialize(jwt_token)
|
71
|
+
def initialize(jwt_token, raise_error: false)
|
72
|
+
@raise_error = raise_error
|
56
73
|
@project_ids = FirebaseIdToken.configuration.project_ids
|
57
74
|
@kid = extract_kid(jwt_token)
|
58
75
|
@jwt_token = jwt_token
|
59
76
|
@firebase_id_token_certificates = FirebaseIdToken.configuration.certificates
|
60
|
-
|
61
77
|
end
|
62
78
|
|
63
79
|
# @see Signature.verify
|
64
80
|
def verify
|
65
|
-
certificate = firebase_id_token_certificates.find(@kid)
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
81
|
+
certificate = firebase_id_token_certificates.find(@kid, raise_error: @raise_error)
|
82
|
+
return unless certificate
|
83
|
+
|
84
|
+
payload = decode_jwt_payload(@jwt_token, certificate.public_key)
|
85
|
+
authorize payload
|
70
86
|
end
|
71
87
|
|
72
88
|
private
|
@@ -74,13 +90,17 @@ module FirebaseIdToken
|
|
74
90
|
def extract_kid(jwt_token)
|
75
91
|
JWT.decode(jwt_token, nil, false).last['kid']
|
76
92
|
rescue StandardError
|
77
|
-
'none'
|
93
|
+
return 'none' unless @raise_error
|
94
|
+
|
95
|
+
raise
|
78
96
|
end
|
79
97
|
|
80
98
|
def decode_jwt_payload(token, cert_key)
|
81
99
|
JWT.decode(token, cert_key, true, JWT_DEFAULTS).first
|
82
100
|
rescue StandardError
|
83
|
-
nil
|
101
|
+
return nil unless @raise_error
|
102
|
+
|
103
|
+
raise
|
84
104
|
end
|
85
105
|
|
86
106
|
def authorize(payload)
|
@@ -97,8 +117,8 @@ module FirebaseIdToken
|
|
97
117
|
end
|
98
118
|
|
99
119
|
def still_valid?(payload)
|
100
|
-
payload['exp'].to_i > Time.
|
101
|
-
payload['iat'].to_i <= Time.
|
120
|
+
payload['exp'].to_i > Time.current.to_i &&
|
121
|
+
payload['iat'].to_i <= Time.current.to_i
|
102
122
|
end
|
103
123
|
|
104
124
|
def issuer_authorized?(payload)
|
@@ -12,10 +12,10 @@ module FirebaseIdToken
|
|
12
12
|
# + {Certificates.private_key}
|
13
13
|
# + {Certificates.certificate}
|
14
14
|
class Certificates
|
15
|
-
# `.find` is
|
15
|
+
# `.find` is stubbed to always return the same certificate.
|
16
16
|
# @param [String] kid Key ID
|
17
17
|
# @return [nil, OpenSSL::X509::Certificate]
|
18
|
-
def self.find(kid)
|
18
|
+
def self.find(kid, raise_error: false)
|
19
19
|
cert = certificate
|
20
20
|
OpenSSL::X509::Certificate.new cert
|
21
21
|
end
|
data/lib/firebase_id_token.rb
CHANGED
@@ -7,6 +7,7 @@ require 'firebase_id_token/version'
|
|
7
7
|
require 'firebase_id_token/exceptions/no_certificates_error'
|
8
8
|
require 'firebase_id_token/exceptions/certificates_request_error'
|
9
9
|
require 'firebase_id_token/exceptions/certificates_ttl_error'
|
10
|
+
require 'firebase_id_token/exceptions/certificate_not_found'
|
10
11
|
require 'firebase_id_token/configuration'
|
11
12
|
require 'firebase_id_token/certificates'
|
12
13
|
require 'firebase_id_token/signature'
|
@@ -49,7 +50,7 @@ module FirebaseIdToken
|
|
49
50
|
|
50
51
|
def self.configuration
|
51
52
|
@configuration ||= Configuration.new
|
52
|
-
end
|
53
|
+
end
|
53
54
|
|
54
55
|
# Resets Configuration to defaults.
|
55
56
|
def self.reset
|
@@ -128,6 +128,28 @@ module FirebaseIdToken
|
|
128
128
|
end
|
129
129
|
end
|
130
130
|
|
131
|
+
describe '.find!' do
|
132
|
+
context 'without certificates in Redis database' do
|
133
|
+
it 'raises a exception' do
|
134
|
+
expect{ described_class.find!(kid)}.
|
135
|
+
to raise_error(Exceptions::NoCertificatesError)
|
136
|
+
end
|
137
|
+
end
|
138
|
+
context 'with certificates in Redis database' do
|
139
|
+
it 'returns a OpenSSL::X509::Certificate when it finds the kid' do
|
140
|
+
described_class.request
|
141
|
+
expect(described_class.find!(kid)).to be_a(OpenSSL::X509::Certificate)
|
142
|
+
end
|
143
|
+
|
144
|
+
it 'raises a CertificateNotFound error when it can not find the kid' do
|
145
|
+
described_class.request
|
146
|
+
expect { described_class.find!('') }
|
147
|
+
.to raise_error(Exceptions::CertificateNotFound, /Unable to find/)
|
148
|
+
end
|
149
|
+
end
|
150
|
+
|
151
|
+
end
|
152
|
+
|
131
153
|
describe '.ttl' do
|
132
154
|
it 'returns a positive number when has certificates in Redis' do
|
133
155
|
described_class.request
|
@@ -3,11 +3,14 @@ require 'spec_helper'
|
|
3
3
|
module FirebaseIdToken
|
4
4
|
describe Signature do
|
5
5
|
let(:jwt) { JSON.parse File.read('spec/fixtures/files/jwt.json') }
|
6
|
+
let(:raise_certificates_error) { false }
|
6
7
|
|
7
|
-
let
|
8
|
-
allow(Certificates)
|
9
|
-
|
10
|
-
|
8
|
+
let(:mock_certificates) do
|
9
|
+
allow(Certificates)
|
10
|
+
.to(receive(:find))
|
11
|
+
.with(an_instance_of(String), raise_error: raise_certificates_error)
|
12
|
+
.and_return(OpenSSL::X509::Certificate.new(jwt['certificate']))
|
13
|
+
end
|
11
14
|
|
12
15
|
before :each do
|
13
16
|
mock_certificates
|
@@ -29,5 +32,22 @@ module FirebaseIdToken
|
|
29
32
|
expect(described_class.verify('aaa')).to be(nil)
|
30
33
|
end
|
31
34
|
end
|
35
|
+
|
36
|
+
describe '#verify!' do
|
37
|
+
let(:raise_certificates_error) { true }
|
38
|
+
it 'returns a Hash when the signature is valid' do
|
39
|
+
expect(described_class.verify!(jwt['jwt_token'])).to be_a(Hash)
|
40
|
+
end
|
41
|
+
|
42
|
+
it 'raises an error when the signature is invalid' do
|
43
|
+
expect { described_class.verify!(jwt['bad_jwt_token']) }
|
44
|
+
.to raise_error(JWT::VerificationError)
|
45
|
+
end
|
46
|
+
|
47
|
+
it 'raises an error with a invalid key format' do
|
48
|
+
expect { described_class.verify!('aaa') }
|
49
|
+
.to raise_error(JWT::DecodeError, /too many/)
|
50
|
+
end
|
51
|
+
end
|
32
52
|
end
|
33
53
|
end
|
metadata
CHANGED
@@ -1,43 +1,55 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: firebase_id_token
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.5.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Fernando Schuindt
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-08-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '2.3'
|
17
20
|
- - ">="
|
18
21
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
22
|
+
version: 2.3.11
|
20
23
|
type: :development
|
21
24
|
prerelease: false
|
22
25
|
version_requirements: !ruby/object:Gem::Requirement
|
23
26
|
requirements:
|
27
|
+
- - "~>"
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '2.3'
|
24
30
|
- - ">="
|
25
31
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
32
|
+
version: 2.3.11
|
27
33
|
- !ruby/object:Gem::Dependency
|
28
34
|
name: rake
|
29
35
|
requirement: !ruby/object:Gem::Requirement
|
30
36
|
requirements:
|
31
37
|
- - "~>"
|
32
38
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
39
|
+
version: '12.3'
|
40
|
+
- - ">="
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: 12.3.3
|
34
43
|
type: :development
|
35
44
|
prerelease: false
|
36
45
|
version_requirements: !ruby/object:Gem::Requirement
|
37
46
|
requirements:
|
38
47
|
- - "~>"
|
39
48
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
49
|
+
version: '12.3'
|
50
|
+
- - ">="
|
51
|
+
- !ruby/object:Gem::Version
|
52
|
+
version: 12.3.3
|
41
53
|
- !ruby/object:Gem::Dependency
|
42
54
|
name: rspec
|
43
55
|
requirement: !ruby/object:Gem::Requirement
|
@@ -56,22 +68,22 @@ dependencies:
|
|
56
68
|
name: redcarpet
|
57
69
|
requirement: !ruby/object:Gem::Requirement
|
58
70
|
requirements:
|
59
|
-
- - ">="
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: 3.4.0
|
62
71
|
- - "~>"
|
63
72
|
- !ruby/object:Gem::Version
|
64
73
|
version: '3.4'
|
74
|
+
- - ">="
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: 3.4.0
|
65
77
|
type: :development
|
66
78
|
prerelease: false
|
67
79
|
version_requirements: !ruby/object:Gem::Requirement
|
68
80
|
requirements:
|
69
|
-
- - ">="
|
70
|
-
- !ruby/object:Gem::Version
|
71
|
-
version: 3.4.0
|
72
81
|
- - "~>"
|
73
82
|
- !ruby/object:Gem::Version
|
74
83
|
version: '3.4'
|
84
|
+
- - ">="
|
85
|
+
- !ruby/object:Gem::Version
|
86
|
+
version: 3.4.0
|
75
87
|
- !ruby/object:Gem::Dependency
|
76
88
|
name: simplecov
|
77
89
|
requirement: !ruby/object:Gem::Requirement
|
@@ -90,22 +102,22 @@ dependencies:
|
|
90
102
|
name: codeclimate-test-reporter
|
91
103
|
requirement: !ruby/object:Gem::Requirement
|
92
104
|
requirements:
|
93
|
-
- - ">="
|
94
|
-
- !ruby/object:Gem::Version
|
95
|
-
version: 1.0.0
|
96
105
|
- - "~>"
|
97
106
|
- !ruby/object:Gem::Version
|
98
107
|
version: '1.0'
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: 1.0.0
|
99
111
|
type: :development
|
100
112
|
prerelease: false
|
101
113
|
version_requirements: !ruby/object:Gem::Requirement
|
102
114
|
requirements:
|
103
|
-
- - ">="
|
104
|
-
- !ruby/object:Gem::Version
|
105
|
-
version: 1.0.0
|
106
115
|
- - "~>"
|
107
116
|
- !ruby/object:Gem::Version
|
108
117
|
version: '1.0'
|
118
|
+
- - ">="
|
119
|
+
- !ruby/object:Gem::Version
|
120
|
+
version: 1.0.0
|
109
121
|
- !ruby/object:Gem::Dependency
|
110
122
|
name: pry
|
111
123
|
requirement: !ruby/object:Gem::Requirement
|
@@ -144,22 +156,22 @@ dependencies:
|
|
144
156
|
name: redis-namespace
|
145
157
|
requirement: !ruby/object:Gem::Requirement
|
146
158
|
requirements:
|
147
|
-
- - ">="
|
148
|
-
- !ruby/object:Gem::Version
|
149
|
-
version: 1.6.0
|
150
159
|
- - "~>"
|
151
160
|
- !ruby/object:Gem::Version
|
152
161
|
version: '1.6'
|
162
|
+
- - ">="
|
163
|
+
- !ruby/object:Gem::Version
|
164
|
+
version: 1.6.0
|
153
165
|
type: :runtime
|
154
166
|
prerelease: false
|
155
167
|
version_requirements: !ruby/object:Gem::Requirement
|
156
168
|
requirements:
|
157
|
-
- - ">="
|
158
|
-
- !ruby/object:Gem::Version
|
159
|
-
version: 1.6.0
|
160
169
|
- - "~>"
|
161
170
|
- !ruby/object:Gem::Version
|
162
171
|
version: '1.6'
|
172
|
+
- - ">="
|
173
|
+
- !ruby/object:Gem::Version
|
174
|
+
version: 1.6.0
|
163
175
|
- !ruby/object:Gem::Dependency
|
164
176
|
name: httparty
|
165
177
|
requirement: !ruby/object:Gem::Requirement
|
@@ -184,22 +196,22 @@ dependencies:
|
|
184
196
|
name: jwt
|
185
197
|
requirement: !ruby/object:Gem::Requirement
|
186
198
|
requirements:
|
187
|
-
- - ">="
|
188
|
-
- !ruby/object:Gem::Version
|
189
|
-
version: 2.1.0
|
190
199
|
- - "~>"
|
191
200
|
- !ruby/object:Gem::Version
|
192
201
|
version: '2.1'
|
202
|
+
- - ">="
|
203
|
+
- !ruby/object:Gem::Version
|
204
|
+
version: 2.1.0
|
193
205
|
type: :runtime
|
194
206
|
prerelease: false
|
195
207
|
version_requirements: !ruby/object:Gem::Requirement
|
196
208
|
requirements:
|
197
|
-
- - ">="
|
198
|
-
- !ruby/object:Gem::Version
|
199
|
-
version: 2.1.0
|
200
209
|
- - "~>"
|
201
210
|
- !ruby/object:Gem::Version
|
202
211
|
version: '2.1'
|
212
|
+
- - ">="
|
213
|
+
- !ruby/object:Gem::Version
|
214
|
+
version: 2.1.0
|
203
215
|
description: A Ruby gem to verify the signature of Firebase ID Tokens. It uses Redis
|
204
216
|
to store Google's x509 certificates and manage their expiration time, so you don't
|
205
217
|
need to request Google's API in every execution and can access it as fast as reading
|
@@ -214,6 +226,7 @@ files:
|
|
214
226
|
- ".rspec"
|
215
227
|
- ".travis.yml"
|
216
228
|
- ".yardopts"
|
229
|
+
- CHANGELOG.md
|
217
230
|
- CODE_OF_CONDUCT.md
|
218
231
|
- Gemfile
|
219
232
|
- LICENSE.txt
|
@@ -221,10 +234,12 @@ files:
|
|
221
234
|
- Rakefile
|
222
235
|
- bin/console
|
223
236
|
- bin/setup
|
237
|
+
- docker-compose.yml
|
224
238
|
- firebase_id_token.gemspec
|
225
239
|
- lib/firebase_id_token.rb
|
226
240
|
- lib/firebase_id_token/certificates.rb
|
227
241
|
- lib/firebase_id_token/configuration.rb
|
242
|
+
- lib/firebase_id_token/exceptions/certificate_not_found.rb
|
228
243
|
- lib/firebase_id_token/exceptions/certificates_request_error.rb
|
229
244
|
- lib/firebase_id_token/exceptions/certificates_ttl_error.rb
|
230
245
|
- lib/firebase_id_token/exceptions/no_certificates_error.rb
|
@@ -245,7 +260,7 @@ homepage: https://github.com/fschuindt/firebase_id_token
|
|
245
260
|
licenses:
|
246
261
|
- MIT
|
247
262
|
metadata: {}
|
248
|
-
post_install_message:
|
263
|
+
post_install_message:
|
249
264
|
rdoc_options: []
|
250
265
|
require_paths:
|
251
266
|
- lib
|
@@ -260,8 +275,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
260
275
|
- !ruby/object:Gem::Version
|
261
276
|
version: '0'
|
262
277
|
requirements: []
|
263
|
-
rubygems_version: 3.
|
264
|
-
signing_key:
|
278
|
+
rubygems_version: 3.1.4
|
279
|
+
signing_key:
|
265
280
|
specification_version: 4
|
266
281
|
summary: A Firebase ID Token verifier.
|
267
282
|
test_files: []
|