firebase_id_token 2.5.2 → 3.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/test.yml +34 -0
- data/.ruby-version +1 -0
- data/CHANGELOG.md +36 -1
- data/README.md +55 -43
- data/firebase_id_token.gemspec +13 -11
- data/lib/firebase_id_token/configuration.rb +0 -1
- data/lib/firebase_id_token/version.rb +1 -1
- data/lib/firebase_id_token.rb +2 -0
- data/spec/firebase_id_token/configuration_spec.rb +0 -6
- data/spec/spec_helper.rb +3 -0
- metadata +66 -54
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b0bb2d6c4da0bacd15e8a551b29b48f3ee99018697334a437f11c5ee03bd2a11
|
4
|
+
data.tar.gz: 936cf705c0130dc0927e0b51811f3cba131970990c7ee5e480fe1705abde2e6f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 62bf3a86a503fba14deac924a837b739c5cba3e7a93ad560a9f9f2b320edf704d7df33897b7422ebffbe47698252c49e00ab72cad3e08da1fb6e43066c0345cd
|
7
|
+
data.tar.gz: ad1a1ed121307e5b79d3943d9b37624bacf8b42f8b171642de6052d50bf313d7ec3f777f99d93f7f31233c45d1bb2365ba10fff3bede139458b9528d25c1a219
|
@@ -0,0 +1,34 @@
|
|
1
|
+
name: Test
|
2
|
+
on:
|
3
|
+
push:
|
4
|
+
branches:
|
5
|
+
- master
|
6
|
+
|
7
|
+
jobs:
|
8
|
+
test:
|
9
|
+
name: "Run Tests"
|
10
|
+
runs-on: ubuntu-latest
|
11
|
+
services:
|
12
|
+
redis:
|
13
|
+
image: redis
|
14
|
+
ports:
|
15
|
+
- 6379:6379
|
16
|
+
options: --entrypoint redis-server
|
17
|
+
steps:
|
18
|
+
- uses: actions/checkout@v3
|
19
|
+
- uses: ruby/setup-ruby@v1
|
20
|
+
with:
|
21
|
+
ruby-version: '3.2.2'
|
22
|
+
- name: Install Bundler
|
23
|
+
run: gem install bundler:2.4.13
|
24
|
+
- name: Install Dependencies
|
25
|
+
run: bundle install
|
26
|
+
- name: Run tests
|
27
|
+
run: bundle exec rspec
|
28
|
+
- name: Publish code coverage
|
29
|
+
uses: paambaati/codeclimate-action@v4.0.0
|
30
|
+
env:
|
31
|
+
CC_TEST_REPORTER_ID: ${{ secrets.CC_TEST_REPORTER_ID }}
|
32
|
+
with:
|
33
|
+
debug: true
|
34
|
+
coverageLocations: ${{github.workspace}}/coverage/coverage.json:simplecov
|
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
3.2.2
|
data/CHANGELOG.md
CHANGED
@@ -6,7 +6,40 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
6
6
|
|
7
7
|
## [Unreleased]
|
8
8
|
|
9
|
-
|
9
|
+
Nothing.
|
10
|
+
|
11
|
+
## [3.0.0] - 2023-04-11
|
12
|
+
|
13
|
+
### Added
|
14
|
+
- CI testing using GitHub Actions.
|
15
|
+
- Explains on `README.md` about the behavior of `verify` on expired tokens. [Details here](https://github.com/fschuindt/firebase_id_token/issues/29).
|
16
|
+
- Warns about the poorly synchronized clocks issue with the token's `iat`. [Details here](https://github.com/fschuindt/firebase_id_token/issues/21#issuecomment-623133926).
|
17
|
+
- Gives better examples when testing. [Details here](https://github.com/fschuindt/firebase_id_token/pull/38).
|
18
|
+
- Created a `.ruby-version` file.
|
19
|
+
- Added ActiveSupport as dependency for `Time.current`.
|
20
|
+
- SimpleCov JSON formatter and `json` as dependency.
|
21
|
+
|
22
|
+
### Changed
|
23
|
+
- It won't default to `Redis.new` anymore. You must now provide Redis details during configuration. [Details here](https://github.com/fschuindt/firebase_id_token/issues/30).
|
24
|
+
- Upgraded Redis to 5.0.6.
|
25
|
+
- Upgraded Redis Namespace to 1.10.
|
26
|
+
- Upgraded HTTParty to 0.21.0.
|
27
|
+
- Upgraded JWT to 2.7.
|
28
|
+
- Upgraded [Dev] Ruby to 3.2.2.
|
29
|
+
- Upgraded [Dev] Bundler to 2.4.13.
|
30
|
+
- Upgraded [Dev] Rake to 13.0.6.
|
31
|
+
- Upgraded [Dev] RSpec to 3.12.
|
32
|
+
- Upgraded [Dev] Redcarpet to 3.6.
|
33
|
+
- Upgraded [Dev] Simplecov to 0.22.0.
|
34
|
+
- Upgraded [Dev] Pry to 0.14.2.
|
35
|
+
|
36
|
+
### Fixed
|
37
|
+
- Code Climate test coverage report.
|
38
|
+
|
39
|
+
### Removed
|
40
|
+
- Travis CI badge.
|
41
|
+
|
42
|
+
## [2.5.2] - 2023-04-09
|
10
43
|
|
11
44
|
### Fixed
|
12
45
|
- [CWE-472](https://github.com/fschuindt/firebase_id_token/pull/41).
|
@@ -119,6 +152,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
119
152
|
## [0.1.0] - 2017-04-23
|
120
153
|
*Version removed.*
|
121
154
|
|
155
|
+
[3.0.0]: https://github.com/fschuindt/firebase_id_token/compare/2.5.2...3.0.0
|
156
|
+
[2.5.2]: https://github.com/fschuindt/firebase_id_token/compare/2.5.1...2.5.2
|
122
157
|
[2.5.1]: https://github.com/fschuindt/firebase_id_token/compare/2.5.0...2.5.1
|
123
158
|
[2.5.0]: https://github.com/fschuindt/firebase_id_token/compare/2.4.0...2.5.0
|
124
159
|
[2.4.0]: https://github.com/fschuindt/firebase_id_token/compare/2.3.2...2.4.0
|
data/README.md
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
# Ruby Firebase ID Token verifier (pre-release)
|
2
2
|
|
3
|
-
![
|
3
|
+
[![Actions Status](https://github.com/fschuindt/firebase_id_token/workflows/Test/badge.svg?branch=master)](https://github.com/fschuindt/firebase_id_token/actions?query=workflow%3ATest)
|
4
|
+
[![Test Coverage](https://codeclimate.com/github/fschuindt/firebase_id_token/badges/coverage.svg)](https://codeclimate.com/github/fschuindt/firebase_id_token/coverage)
|
4
5
|
[![Code Climate](https://codeclimate.com/github/fschuindt/firebase_id_token/badges/gpa.svg)](https://codeclimate.com/github/fschuindt/firebase_id_token)
|
5
6
|
[![Issue Count](https://codeclimate.com/github/fschuindt/firebase_id_token/badges/issue_count.svg)](https://codeclimate.com/github/fschuindt/firebase_id_token)
|
6
|
-
[![Test Coverage](https://codeclimate.com/github/fschuindt/firebase_id_token/badges/coverage.svg)](https://codeclimate.com/github/fschuindt/firebase_id_token/coverage)
|
7
7
|
[![Inline docs](http://inch-ci.org/github/fschuindt/firebase_id_token.svg?branch=master)](http://inch-ci.org/github/fschuindt/firebase_id_token)
|
8
8
|
|
9
|
-
A Ruby gem to verify the signature of Firebase ID Tokens. It uses Redis to store Google's x509 certificates and manage their expiration time, so you don't need to request Google's API in every execution and can access it as fast as reading from memory.
|
9
|
+
A Ruby gem to verify the signature of Firebase ID Tokens (JWT). It uses Redis to store Google's x509 certificates and manage their expiration time, so you don't need to request Google's API in every execution and can access it as fast as reading from memory.
|
10
10
|
|
11
11
|
It also checks the JWT payload parameters as recommended [here](https://firebase.google.com/docs/auth/admin/verify-id-tokens) by Firebase official documentation.
|
12
12
|
|
@@ -29,7 +29,7 @@ gem install firebase_id_token
|
|
29
29
|
|
30
30
|
or in your Gemfile
|
31
31
|
```
|
32
|
-
gem 'firebase_id_token', '~>
|
32
|
+
gem 'firebase_id_token', '~> 3.0.0'
|
33
33
|
```
|
34
34
|
then
|
35
35
|
```
|
@@ -43,25 +43,16 @@ It's needed to set up your Firebase Project ID.
|
|
43
43
|
If you are using Rails, this should probably go into `config/initializers/firebase_id_token.rb`.
|
44
44
|
```ruby
|
45
45
|
FirebaseIdToken.configure do |config|
|
46
|
+
config.redis = Redis.new
|
46
47
|
config.project_ids = ['your-firebase-project-id']
|
47
48
|
end
|
48
49
|
```
|
49
50
|
|
50
|
-
`
|
51
|
+
- `redis` with a `Redis` instance must be supplied. You can configure your Redis details here. Example: `Redis.new(host: '10.0.1.1', port: 6380, db: 15)`.
|
52
|
+
- `project_ids` must be an Array.
|
51
53
|
|
52
54
|
*If you want to verify signatures from more than one Firebase project, just add more Project IDs to the list.*
|
53
55
|
|
54
|
-
You can also pass a Redis instance to `config` if you are not using Redis defaults.
|
55
|
-
In this case, you must have the gem `redis` in your `Gemfile`.
|
56
|
-
```ruby
|
57
|
-
FirebaseIdToken.configure do |config|
|
58
|
-
config.project_ids = ['your-firebase-project-id']
|
59
|
-
config.redis = Redis.new(host: '10.0.1.1', port: 6380, db: 15)
|
60
|
-
end
|
61
|
-
```
|
62
|
-
|
63
|
-
Otherwise, it will use just `Redis.new` as the instance.
|
64
|
-
|
65
56
|
## Usage
|
66
57
|
|
67
58
|
You can get a glimpse of it by reading our RSpec output on your machine. It's
|
@@ -71,21 +62,21 @@ really helpful. But here is a complete guide:
|
|
71
62
|
|
72
63
|
Before verifying tokens, you need to download Google's x509 certificates.
|
73
64
|
|
74
|
-
To do it simply:
|
65
|
+
To do it, simply:
|
75
66
|
```ruby
|
76
67
|
FirebaseIdToken::Certificates.request
|
77
68
|
```
|
78
69
|
|
79
|
-
It will download the certificates and save it in Redis, but only if Redis certificates database is empty. To force download and override Redis database, use:
|
70
|
+
It will download the certificates and save it in Redis, but only if the Redis certificates database is empty. To force download and override of the Redis database, use:
|
80
71
|
```ruby
|
81
72
|
FirebaseIdToken::Certificates.request!
|
82
73
|
```
|
83
74
|
|
84
|
-
Google give us information about the certificates expiration time, it's used to set a Redis TTL (Time-To-Live) when saving it. By doing so, the certificates will be automatically deleted after its expiration.
|
75
|
+
Google give us information about the certificates' expiration time, it's used to set a Redis TTL (Time-To-Live) when saving it. By doing so, the certificates will be automatically deleted after its expiration.
|
85
76
|
|
86
77
|
#### Certificates Info
|
87
78
|
|
88
|
-
Checks the presence of certificates in Redis database.
|
79
|
+
Checks the presence of certificates in the Redis database.
|
89
80
|
```ruby
|
90
81
|
FirebaseIdToken::Certificates.present?
|
91
82
|
=> true
|
@@ -97,13 +88,13 @@ FirebaseIdToken::Certificates.ttl
|
|
97
88
|
=> 22352
|
98
89
|
```
|
99
90
|
|
100
|
-
Lists all certificates in
|
91
|
+
Lists all certificates in the database.
|
101
92
|
```ruby
|
102
93
|
FirebaseIdToken::Certificates.all
|
103
94
|
=> [{"ec8f292sd30224afac5c55540df66d1f999d" => <OpenSSL::X509::Certificate: [...]]
|
104
95
|
```
|
105
96
|
|
106
|
-
Finds the respective certificate of a given Key ID.
|
97
|
+
Finds the respective certificate of a given Key ID (`kid`).
|
107
98
|
```ruby
|
108
99
|
FirebaseIdToken::Certificates.find('ec8f292sd30224afac5c55540df66d1f999d')
|
109
100
|
=> <OpenSSL::X509::Certificate: subject=<OpenSSL::X509 [...]>
|
@@ -153,7 +144,7 @@ When developing, you should just run the task:
|
|
153
144
|
$ rake firebase:certificates:request
|
154
145
|
```
|
155
146
|
|
156
|
-
*
|
147
|
+
*You need Redis to be running.*
|
157
148
|
|
158
149
|
### Verifying Tokens
|
159
150
|
|
@@ -173,22 +164,42 @@ FirebaseIdToken::Signature.verify('aaaaaa')
|
|
173
164
|
=> nil
|
174
165
|
```
|
175
166
|
|
176
|
-
|
167
|
+
#### WARNING!
|
168
|
+
|
169
|
+
##### Expired tokens can point to long gone certificates
|
170
|
+
|
171
|
+
Notice that often when the token have expired, the Firebase certificate can be already missing from the Firebase servers. In these cases, `verify` will return `nil`.
|
172
|
+
|
173
|
+
If you want to take specific actions in such cases, here's a solution suggested by the user [cfanpnk](https://github.com/fschuindt/firebase_id_token/issues/29#issuecomment-751137511):
|
174
|
+
|
175
|
+
1. Use `verify!` to raise an exception.
|
176
|
+
2. Rescue `FirebaseIdToken::Exceptions::CertificateNotFound` and return `401`.
|
177
|
+
3. The client app will refresh the token if expired.
|
178
|
+
|
179
|
+
More details [here](https://github.com/fschuindt/firebase_id_token/issues/29).
|
180
|
+
|
181
|
+
##### Trying to verify tokens without downloaded certificates will raise an error
|
182
|
+
|
183
|
+
If you try to verify a signature without any certificates in Redis database, it will raise a `FirebaseIdToken::Exceptions::NoCertificatesError`.
|
184
|
+
|
185
|
+
##### "I keep on getting `nil` on `verify`"
|
186
|
+
|
187
|
+
Poorly synchronized clocks will sometimes make the server think the token's `iat` is on the future, which will render the token as invalid. Make sure your server's or development system's clock is correctly set. On macOS, some people reported success by unchecking and checking the "Set date and time automatically" configuration checkbox. See [here](https://github.com/fschuindt/firebase_id_token/issues/21#issuecomment-623133926).
|
177
188
|
|
178
189
|
#### Payload Structure
|
179
190
|
|
180
191
|
In case you need, here's a example of the payload structure from a Google login in JSON.
|
181
192
|
```json
|
182
193
|
{
|
183
|
-
"iss":"https://securetoken.google.com/
|
194
|
+
"iss":"https://securetoken.google.com/{{YOUR_FIREBASE_APP_ID}}",
|
184
195
|
"name":"Ugly Bob",
|
185
196
|
"picture":"https://someurl.com/photo.jpg",
|
186
|
-
"aud":"
|
197
|
+
"aud":"{{YOUR_FIREBASE_APP_ID}}",
|
187
198
|
"auth_time":1492981192,
|
188
199
|
"user_id":"theUserID",
|
189
200
|
"sub":"theUserID",
|
190
|
-
"iat":1492981200,
|
191
|
-
"exp":33029000017,
|
201
|
+
"iat":1492981200, // needs to be in the past
|
202
|
+
"exp":33029000017, // needs to be in the future
|
192
203
|
"email":"uglybob@emailurl.com",
|
193
204
|
"email_verified":true,
|
194
205
|
"firebase":{
|
@@ -206,34 +217,36 @@ In case you need, here's a example of the payload structure from a Google login
|
|
206
217
|
|
207
218
|
```
|
208
219
|
|
220
|
+
If you're using this snippet for testing, make sure you check the comments in it.
|
209
221
|
|
210
|
-
##
|
211
|
-
The test suite can be run with `bundle exec rake rspec`
|
222
|
+
## Testing
|
212
223
|
|
224
|
+
```
|
225
|
+
bundle exec rake rspec
|
226
|
+
```
|
213
227
|
|
214
|
-
|
215
|
-
|
216
|
-
`FirebaseIdToken.test!`
|
228
|
+
### Testing Mode
|
217
229
|
|
230
|
+
Just run:
|
231
|
+
```
|
232
|
+
FirebaseIdToken.test!
|
233
|
+
```
|
218
234
|
|
219
|
-
By using
|
235
|
+
By using this mode, the following methods become available.
|
220
236
|
|
221
237
|
```ruby
|
222
238
|
# RSA PRIVATE KEY
|
223
239
|
FirebaseIdToken::Testing::Certificates.private_key
|
240
|
+
|
224
241
|
# CERTIFICATE
|
225
242
|
FirebaseIdToken::Testing::Certificates.certificate
|
226
243
|
```
|
227
244
|
|
228
|
-
|
245
|
+
`certificate` will always return the same value. No external HTTP call is performed.
|
229
246
|
|
247
|
+
#### Example: Testing in Rails
|
230
248
|
|
231
|
-
|
232
|
-
#### Rails test
|
233
|
-
|
234
|
-
Describe the following in test_helper.rb etc.
|
235
|
-
|
236
|
-
* test_helper
|
249
|
+
Describes the following in `test_helper.rb`.
|
237
250
|
|
238
251
|
```ruby
|
239
252
|
class ActiveSupport::TestCase
|
@@ -243,7 +256,7 @@ class ActiveSupport::TestCase
|
|
243
256
|
end
|
244
257
|
```
|
245
258
|
|
246
|
-
|
259
|
+
Test example:
|
247
260
|
|
248
261
|
```ruby
|
249
262
|
require 'test_helper'
|
@@ -274,7 +287,6 @@ module Api
|
|
274
287
|
end
|
275
288
|
```
|
276
289
|
|
277
|
-
|
278
290
|
## License
|
279
291
|
|
280
292
|
The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
|
data/firebase_id_token.gemspec
CHANGED
@@ -22,16 +22,18 @@ 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', '~> 2.
|
26
|
-
spec.add_development_dependency 'rake', '~>
|
27
|
-
spec.add_development_dependency 'rspec', '~> 3.
|
28
|
-
spec.add_development_dependency 'redcarpet', '~> 3.
|
29
|
-
spec.add_development_dependency 'simplecov', '~> 0.
|
30
|
-
spec.add_development_dependency '
|
31
|
-
spec.add_development_dependency 'pry', '~> 0.
|
25
|
+
spec.add_development_dependency 'bundler', '~> 2.4', '>= 2.4.13'
|
26
|
+
spec.add_development_dependency 'rake', '~> 13.0', '>= 13.0.6'
|
27
|
+
spec.add_development_dependency 'rspec', '~> 3.12'
|
28
|
+
spec.add_development_dependency 'redcarpet', '~> 3.6'
|
29
|
+
spec.add_development_dependency 'simplecov', '~> 0.22.0'
|
30
|
+
spec.add_development_dependency 'simplecov_json_formatter', '~> 0.1.2'
|
31
|
+
spec.add_development_dependency 'pry', '~> 0.14.2'
|
32
32
|
|
33
|
-
spec.add_runtime_dependency 'redis', '~>
|
34
|
-
spec.add_runtime_dependency 'redis-namespace', '~> 1.
|
35
|
-
spec.add_dependency 'httparty', '~> 0.21
|
36
|
-
spec.add_runtime_dependency 'jwt', '~> 2.
|
33
|
+
spec.add_runtime_dependency 'redis', '~> 5.0', '>= 5.0.6'
|
34
|
+
spec.add_runtime_dependency 'redis-namespace', '~> 1.10'
|
35
|
+
spec.add_dependency 'httparty', '~> 0.21.0'
|
36
|
+
spec.add_runtime_dependency 'jwt', '~> 2.7'
|
37
|
+
spec.add_runtime_dependency 'activesupport', '~> 7.0', '>= 7.0.4.3'
|
38
|
+
spec.add_runtime_dependency 'json', '~> 2.6', '>= 2.6.3'
|
37
39
|
end
|
data/lib/firebase_id_token.rb
CHANGED
@@ -16,12 +16,6 @@ module FirebaseIdToken
|
|
16
16
|
end
|
17
17
|
end
|
18
18
|
|
19
|
-
describe '.redis' do
|
20
|
-
it 'sets a Redis instance as default' do
|
21
|
-
expect(Configuration.new.redis).to be_a(Redis)
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
19
|
describe '.redis=' do
|
26
20
|
it 'changes default values' do
|
27
21
|
config = Configuration.new
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: firebase_id_token
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 3.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Fernando Schuindt
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-05-
|
11
|
+
date: 2023-05-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -16,202 +16,212 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '2.
|
19
|
+
version: '2.4'
|
20
20
|
- - ">="
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version: 2.
|
22
|
+
version: 2.4.13
|
23
23
|
type: :development
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
26
26
|
requirements:
|
27
27
|
- - "~>"
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
version: '2.
|
29
|
+
version: '2.4'
|
30
30
|
- - ">="
|
31
31
|
- !ruby/object:Gem::Version
|
32
|
-
version: 2.
|
32
|
+
version: 2.4.13
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
34
|
name: rake
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|
36
36
|
requirements:
|
37
37
|
- - "~>"
|
38
38
|
- !ruby/object:Gem::Version
|
39
|
-
version: '
|
39
|
+
version: '13.0'
|
40
40
|
- - ">="
|
41
41
|
- !ruby/object:Gem::Version
|
42
|
-
version:
|
42
|
+
version: 13.0.6
|
43
43
|
type: :development
|
44
44
|
prerelease: false
|
45
45
|
version_requirements: !ruby/object:Gem::Requirement
|
46
46
|
requirements:
|
47
47
|
- - "~>"
|
48
48
|
- !ruby/object:Gem::Version
|
49
|
-
version: '
|
49
|
+
version: '13.0'
|
50
50
|
- - ">="
|
51
51
|
- !ruby/object:Gem::Version
|
52
|
-
version:
|
52
|
+
version: 13.0.6
|
53
53
|
- !ruby/object:Gem::Dependency
|
54
54
|
name: rspec
|
55
55
|
requirement: !ruby/object:Gem::Requirement
|
56
56
|
requirements:
|
57
57
|
- - "~>"
|
58
58
|
- !ruby/object:Gem::Version
|
59
|
-
version: '3.
|
59
|
+
version: '3.12'
|
60
60
|
type: :development
|
61
61
|
prerelease: false
|
62
62
|
version_requirements: !ruby/object:Gem::Requirement
|
63
63
|
requirements:
|
64
64
|
- - "~>"
|
65
65
|
- !ruby/object:Gem::Version
|
66
|
-
version: '3.
|
66
|
+
version: '3.12'
|
67
67
|
- !ruby/object:Gem::Dependency
|
68
68
|
name: redcarpet
|
69
69
|
requirement: !ruby/object:Gem::Requirement
|
70
70
|
requirements:
|
71
71
|
- - "~>"
|
72
72
|
- !ruby/object:Gem::Version
|
73
|
-
version: '3.
|
74
|
-
- - ">="
|
75
|
-
- !ruby/object:Gem::Version
|
76
|
-
version: 3.4.0
|
73
|
+
version: '3.6'
|
77
74
|
type: :development
|
78
75
|
prerelease: false
|
79
76
|
version_requirements: !ruby/object:Gem::Requirement
|
80
77
|
requirements:
|
81
78
|
- - "~>"
|
82
79
|
- !ruby/object:Gem::Version
|
83
|
-
version: '3.
|
84
|
-
- - ">="
|
85
|
-
- !ruby/object:Gem::Version
|
86
|
-
version: 3.4.0
|
80
|
+
version: '3.6'
|
87
81
|
- !ruby/object:Gem::Dependency
|
88
82
|
name: simplecov
|
89
83
|
requirement: !ruby/object:Gem::Requirement
|
90
84
|
requirements:
|
91
85
|
- - "~>"
|
92
86
|
- !ruby/object:Gem::Version
|
93
|
-
version: 0.
|
87
|
+
version: 0.22.0
|
94
88
|
type: :development
|
95
89
|
prerelease: false
|
96
90
|
version_requirements: !ruby/object:Gem::Requirement
|
97
91
|
requirements:
|
98
92
|
- - "~>"
|
99
93
|
- !ruby/object:Gem::Version
|
100
|
-
version: 0.
|
94
|
+
version: 0.22.0
|
101
95
|
- !ruby/object:Gem::Dependency
|
102
|
-
name:
|
96
|
+
name: simplecov_json_formatter
|
103
97
|
requirement: !ruby/object:Gem::Requirement
|
104
98
|
requirements:
|
105
99
|
- - "~>"
|
106
100
|
- !ruby/object:Gem::Version
|
107
|
-
version:
|
108
|
-
- - ">="
|
109
|
-
- !ruby/object:Gem::Version
|
110
|
-
version: 1.0.0
|
101
|
+
version: 0.1.2
|
111
102
|
type: :development
|
112
103
|
prerelease: false
|
113
104
|
version_requirements: !ruby/object:Gem::Requirement
|
114
105
|
requirements:
|
115
106
|
- - "~>"
|
116
107
|
- !ruby/object:Gem::Version
|
117
|
-
version:
|
118
|
-
- - ">="
|
119
|
-
- !ruby/object:Gem::Version
|
120
|
-
version: 1.0.0
|
108
|
+
version: 0.1.2
|
121
109
|
- !ruby/object:Gem::Dependency
|
122
110
|
name: pry
|
123
111
|
requirement: !ruby/object:Gem::Requirement
|
124
112
|
requirements:
|
125
113
|
- - "~>"
|
126
114
|
- !ruby/object:Gem::Version
|
127
|
-
version: 0.
|
115
|
+
version: 0.14.2
|
128
116
|
type: :development
|
129
117
|
prerelease: false
|
130
118
|
version_requirements: !ruby/object:Gem::Requirement
|
131
119
|
requirements:
|
132
120
|
- - "~>"
|
133
121
|
- !ruby/object:Gem::Version
|
134
|
-
version: 0.
|
122
|
+
version: 0.14.2
|
135
123
|
- !ruby/object:Gem::Dependency
|
136
124
|
name: redis
|
137
125
|
requirement: !ruby/object:Gem::Requirement
|
138
126
|
requirements:
|
139
127
|
- - "~>"
|
140
128
|
- !ruby/object:Gem::Version
|
141
|
-
version: '
|
129
|
+
version: '5.0'
|
142
130
|
- - ">="
|
143
131
|
- !ruby/object:Gem::Version
|
144
|
-
version:
|
132
|
+
version: 5.0.6
|
145
133
|
type: :runtime
|
146
134
|
prerelease: false
|
147
135
|
version_requirements: !ruby/object:Gem::Requirement
|
148
136
|
requirements:
|
149
137
|
- - "~>"
|
150
138
|
- !ruby/object:Gem::Version
|
151
|
-
version: '
|
139
|
+
version: '5.0'
|
152
140
|
- - ">="
|
153
141
|
- !ruby/object:Gem::Version
|
154
|
-
version:
|
142
|
+
version: 5.0.6
|
155
143
|
- !ruby/object:Gem::Dependency
|
156
144
|
name: redis-namespace
|
157
145
|
requirement: !ruby/object:Gem::Requirement
|
158
146
|
requirements:
|
159
147
|
- - "~>"
|
160
148
|
- !ruby/object:Gem::Version
|
161
|
-
version: '1.
|
162
|
-
|
149
|
+
version: '1.10'
|
150
|
+
type: :runtime
|
151
|
+
prerelease: false
|
152
|
+
version_requirements: !ruby/object:Gem::Requirement
|
153
|
+
requirements:
|
154
|
+
- - "~>"
|
155
|
+
- !ruby/object:Gem::Version
|
156
|
+
version: '1.10'
|
157
|
+
- !ruby/object:Gem::Dependency
|
158
|
+
name: httparty
|
159
|
+
requirement: !ruby/object:Gem::Requirement
|
160
|
+
requirements:
|
161
|
+
- - "~>"
|
163
162
|
- !ruby/object:Gem::Version
|
164
|
-
version:
|
163
|
+
version: 0.21.0
|
165
164
|
type: :runtime
|
166
165
|
prerelease: false
|
167
166
|
version_requirements: !ruby/object:Gem::Requirement
|
168
167
|
requirements:
|
169
168
|
- - "~>"
|
170
169
|
- !ruby/object:Gem::Version
|
171
|
-
version:
|
172
|
-
|
170
|
+
version: 0.21.0
|
171
|
+
- !ruby/object:Gem::Dependency
|
172
|
+
name: jwt
|
173
|
+
requirement: !ruby/object:Gem::Requirement
|
174
|
+
requirements:
|
175
|
+
- - "~>"
|
173
176
|
- !ruby/object:Gem::Version
|
174
|
-
version:
|
177
|
+
version: '2.7'
|
178
|
+
type: :runtime
|
179
|
+
prerelease: false
|
180
|
+
version_requirements: !ruby/object:Gem::Requirement
|
181
|
+
requirements:
|
182
|
+
- - "~>"
|
183
|
+
- !ruby/object:Gem::Version
|
184
|
+
version: '2.7'
|
175
185
|
- !ruby/object:Gem::Dependency
|
176
|
-
name:
|
186
|
+
name: activesupport
|
177
187
|
requirement: !ruby/object:Gem::Requirement
|
178
188
|
requirements:
|
179
189
|
- - "~>"
|
180
190
|
- !ruby/object:Gem::Version
|
181
|
-
version: '0
|
191
|
+
version: '7.0'
|
182
192
|
- - ">="
|
183
193
|
- !ruby/object:Gem::Version
|
184
|
-
version: 0.
|
194
|
+
version: 7.0.4.3
|
185
195
|
type: :runtime
|
186
196
|
prerelease: false
|
187
197
|
version_requirements: !ruby/object:Gem::Requirement
|
188
198
|
requirements:
|
189
199
|
- - "~>"
|
190
200
|
- !ruby/object:Gem::Version
|
191
|
-
version: '0
|
201
|
+
version: '7.0'
|
192
202
|
- - ">="
|
193
203
|
- !ruby/object:Gem::Version
|
194
|
-
version: 0.
|
204
|
+
version: 7.0.4.3
|
195
205
|
- !ruby/object:Gem::Dependency
|
196
|
-
name:
|
206
|
+
name: json
|
197
207
|
requirement: !ruby/object:Gem::Requirement
|
198
208
|
requirements:
|
199
209
|
- - "~>"
|
200
210
|
- !ruby/object:Gem::Version
|
201
|
-
version: '2.
|
211
|
+
version: '2.6'
|
202
212
|
- - ">="
|
203
213
|
- !ruby/object:Gem::Version
|
204
|
-
version: 2.
|
214
|
+
version: 2.6.3
|
205
215
|
type: :runtime
|
206
216
|
prerelease: false
|
207
217
|
version_requirements: !ruby/object:Gem::Requirement
|
208
218
|
requirements:
|
209
219
|
- - "~>"
|
210
220
|
- !ruby/object:Gem::Version
|
211
|
-
version: '2.
|
221
|
+
version: '2.6'
|
212
222
|
- - ">="
|
213
223
|
- !ruby/object:Gem::Version
|
214
|
-
version: 2.
|
224
|
+
version: 2.6.3
|
215
225
|
description: A Ruby gem to verify the signature of Firebase ID Tokens. It uses Redis
|
216
226
|
to store Google's x509 certificates and manage their expiration time, so you don't
|
217
227
|
need to request Google's API in every execution and can access it as fast as reading
|
@@ -222,8 +232,10 @@ executables: []
|
|
222
232
|
extensions: []
|
223
233
|
extra_rdoc_files: []
|
224
234
|
files:
|
235
|
+
- ".github/workflows/test.yml"
|
225
236
|
- ".gitignore"
|
226
237
|
- ".rspec"
|
238
|
+
- ".ruby-version"
|
227
239
|
- ".travis.yml"
|
228
240
|
- ".yardopts"
|
229
241
|
- CHANGELOG.md
|
@@ -275,7 +287,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
275
287
|
- !ruby/object:Gem::Version
|
276
288
|
version: '0'
|
277
289
|
requirements: []
|
278
|
-
rubygems_version: 3.
|
290
|
+
rubygems_version: 3.4.10
|
279
291
|
signing_key:
|
280
292
|
specification_version: 4
|
281
293
|
summary: A Firebase ID Token verifier.
|