cognito_token_verifier 0.1.0 → 0.4.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b62edbc24a15d7e43934a4ffcb641370e503084caffbac662da565528b3621f4
4
- data.tar.gz: 4d562bee7ee8130d082c3f24530a1e62f235c03e176733bdd7b17d7cf7deca09
3
+ metadata.gz: e52ad068216f8d8e80a8386541332664f16adbb05182df520a34ec3f52b9c951
4
+ data.tar.gz: 063cc32b60dbe0bf6eed61ef853a06d661fb4fefa9af6618715417b33606bd7c
5
5
  SHA512:
6
- metadata.gz: 000d7d04865954163674f2970163cd411fae1a8bbd83cf7f2dd5feeac00f5674367fd07621e135a44c59a2687115092405834ae42a9d5cad5bbbf7353a62a5bf
7
- data.tar.gz: e1c17ca0365937f4bad00d395283f9d8f74fc58342cda151a23597c34925d1f058ed2f23ecad157b26a028854225275b4dd5b3b7d4646facf5184a7f280ca972
6
+ metadata.gz: f0c6192b9d02a7fac391df255c2332efb61099317bf7fd20cd773cb29e64882df3534196a23f37eb91136e84eda0db8601d2eda6536665531a104ea2f2e12ea0
7
+ data.tar.gz: 640249a032a23885d719b13334c69cabb41ddc3dc14d2e8e5848ff264594d1a8f1d14c4a87a3961389d11975145fbb10758c81481aa88939e0b5d40466c97bfe
@@ -3,13 +3,14 @@ sudo: false
3
3
  language: ruby
4
4
  cache: bundler
5
5
  rvm:
6
- - 2.3.8
7
- - 2.4.5
8
- - 2.5.3
9
- - 2.6.1
10
- before_install: gem install bundler -v 2.0.1
6
+ - 2.5.8
7
+ - 2.6.6
8
+ - 2.7.1
9
+ before_install: gem install bundler
11
10
  gemfile:
12
11
  - Gemfile
13
- - gemfiles/rails42.gemfile
14
- - gemfiles/rails51.gemfile
15
12
  - gemfiles/rails52.gemfile
13
+ - gemfiles/rails6.gemfile
14
+
15
+ # jobs:
16
+ # exclude:
@@ -0,0 +1,22 @@
1
+ # CHANGELOG.md
2
+
3
+ ## 0.3.2 (2020-03-31)
4
+
5
+ - Update development version of Rails gems for `actionview` security patch
6
+
7
+ ## 0.3.1 (2020-02-27)
8
+
9
+ - Update `nokogiri` version to 1.10.8 for security patches in gem development
10
+
11
+ ## 0.3.0 (2019-11-14)
12
+
13
+ - Add Rails 6 support
14
+ - Update minimum json-jwt and loofah libraries for CVEs
15
+
16
+ ## 0.2.0 (2019-02-21)
17
+
18
+ - Improvements to handling errors fetching JWKs and decoding Cognito JWTs
19
+
20
+ ## 0.1.0 (2019-02-20)
21
+
22
+ - Initial release of Cognito token verification gem
@@ -1,116 +1,120 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- cognito_token_verifier (0.1.0)
5
- activesupport (>= 4.2, < 6.0)
6
- json-jwt (~> 1.1)
4
+ cognito_token_verifier (0.4.0)
5
+ activesupport (>= 5.2, < 6.1)
6
+ json-jwt (~> 1.11)
7
7
  rest-client (~> 2.0)
8
8
 
9
9
  GEM
10
10
  remote: https://rubygems.org/
11
11
  specs:
12
- actionpack (5.2.2)
13
- actionview (= 5.2.2)
14
- activesupport (= 5.2.2)
15
- rack (~> 2.0)
12
+ actionpack (6.0.3.3)
13
+ actionview (= 6.0.3.3)
14
+ activesupport (= 6.0.3.3)
15
+ rack (~> 2.0, >= 2.0.8)
16
16
  rack-test (>= 0.6.3)
17
17
  rails-dom-testing (~> 2.0)
18
- rails-html-sanitizer (~> 1.0, >= 1.0.2)
19
- actionview (5.2.2)
20
- activesupport (= 5.2.2)
18
+ rails-html-sanitizer (~> 1.0, >= 1.2.0)
19
+ actionview (6.0.3.3)
20
+ activesupport (= 6.0.3.3)
21
21
  builder (~> 3.1)
22
22
  erubi (~> 1.4)
23
23
  rails-dom-testing (~> 2.0)
24
- rails-html-sanitizer (~> 1.0, >= 1.0.3)
25
- activesupport (5.2.2)
24
+ rails-html-sanitizer (~> 1.1, >= 1.2.0)
25
+ activesupport (6.0.3.3)
26
26
  concurrent-ruby (~> 1.0, >= 1.0.2)
27
27
  i18n (>= 0.7, < 2)
28
28
  minitest (~> 5.1)
29
29
  tzinfo (~> 1.1)
30
- aes_key_wrap (1.0.1)
31
- bindata (2.4.4)
32
- builder (3.2.3)
33
- byebug (11.0.0)
34
- concurrent-ruby (1.1.4)
35
- crass (1.0.4)
36
- diff-lcs (1.3)
37
- domain_name (0.5.20180417)
30
+ zeitwerk (~> 2.2, >= 2.2.2)
31
+ aes_key_wrap (1.1.0)
32
+ bindata (2.4.8)
33
+ builder (3.2.4)
34
+ byebug (11.1.3)
35
+ concurrent-ruby (1.1.7)
36
+ crass (1.0.6)
37
+ diff-lcs (1.4.4)
38
+ domain_name (0.5.20190701)
38
39
  unf (>= 0.0.5, < 1.0.0)
39
- erubi (1.8.0)
40
+ erubi (1.9.0)
41
+ http-accept (1.7.0)
40
42
  http-cookie (1.0.3)
41
43
  domain_name (~> 0.5)
42
- i18n (1.5.3)
44
+ i18n (1.8.5)
43
45
  concurrent-ruby (~> 1.0)
44
- json-jwt (1.10.0)
46
+ json-jwt (1.13.0)
45
47
  activesupport (>= 4.2)
46
48
  aes_key_wrap
47
49
  bindata
48
- loofah (2.2.3)
50
+ loofah (2.7.0)
49
51
  crass (~> 1.0.2)
50
52
  nokogiri (>= 1.5.9)
51
- method_source (0.9.2)
52
- mime-types (3.2.2)
53
+ method_source (1.0.0)
54
+ mime-types (3.3.1)
53
55
  mime-types-data (~> 3.2015)
54
- mime-types-data (3.2018.0812)
56
+ mime-types-data (3.2020.0512)
55
57
  mini_portile2 (2.4.0)
56
- minitest (5.11.3)
58
+ minitest (5.14.2)
57
59
  netrc (0.11.0)
58
- nokogiri (1.10.1)
60
+ nokogiri (1.10.10)
59
61
  mini_portile2 (~> 2.4.0)
60
- rack (2.0.6)
62
+ rack (2.2.3)
61
63
  rack-test (1.1.0)
62
64
  rack (>= 1.0, < 3)
63
65
  rails-dom-testing (2.0.3)
64
66
  activesupport (>= 4.2.0)
65
67
  nokogiri (>= 1.6)
66
- rails-html-sanitizer (1.0.4)
67
- loofah (~> 2.2, >= 2.2.2)
68
- railties (5.2.2)
69
- actionpack (= 5.2.2)
70
- activesupport (= 5.2.2)
68
+ rails-html-sanitizer (1.3.0)
69
+ loofah (~> 2.3)
70
+ railties (6.0.3.3)
71
+ actionpack (= 6.0.3.3)
72
+ activesupport (= 6.0.3.3)
71
73
  method_source
72
74
  rake (>= 0.8.7)
73
- thor (>= 0.19.0, < 2.0)
74
- rake (12.3.2)
75
- rest-client (2.0.2)
75
+ thor (>= 0.20.3, < 2.0)
76
+ rake (13.0.1)
77
+ rest-client (2.1.0)
78
+ http-accept (>= 1.7.0, < 2.0)
76
79
  http-cookie (>= 1.0.2, < 2.0)
77
80
  mime-types (>= 1.16, < 4.0)
78
81
  netrc (~> 0.8)
79
- rspec-core (3.8.0)
80
- rspec-support (~> 3.8.0)
81
- rspec-expectations (3.8.2)
82
+ rspec-core (3.9.2)
83
+ rspec-support (~> 3.9.3)
84
+ rspec-expectations (3.9.2)
82
85
  diff-lcs (>= 1.2.0, < 2.0)
83
- rspec-support (~> 3.8.0)
84
- rspec-mocks (3.8.0)
86
+ rspec-support (~> 3.9.0)
87
+ rspec-mocks (3.9.1)
85
88
  diff-lcs (>= 1.2.0, < 2.0)
86
- rspec-support (~> 3.8.0)
87
- rspec-rails (3.8.2)
89
+ rspec-support (~> 3.9.0)
90
+ rspec-rails (3.9.1)
88
91
  actionpack (>= 3.0)
89
92
  activesupport (>= 3.0)
90
93
  railties (>= 3.0)
91
- rspec-core (~> 3.8.0)
92
- rspec-expectations (~> 3.8.0)
93
- rspec-mocks (~> 3.8.0)
94
- rspec-support (~> 3.8.0)
95
- rspec-support (3.8.0)
96
- thor (0.20.3)
94
+ rspec-core (~> 3.9.0)
95
+ rspec-expectations (~> 3.9.0)
96
+ rspec-mocks (~> 3.9.0)
97
+ rspec-support (~> 3.9.0)
98
+ rspec-support (3.9.3)
99
+ thor (1.0.1)
97
100
  thread_safe (0.3.6)
98
- tzinfo (1.2.5)
101
+ tzinfo (1.2.7)
99
102
  thread_safe (~> 0.1)
100
103
  unf (0.1.4)
101
104
  unf_ext
102
- unf_ext (0.0.7.5)
105
+ unf_ext (0.0.7.7)
106
+ zeitwerk (2.4.0)
103
107
 
104
108
  PLATFORMS
105
109
  ruby
106
110
 
107
111
  DEPENDENCIES
108
- actionpack (>= 4.2, < 6.0)
112
+ actionpack (>= 5.2, < 6.1)
109
113
  bundler (~> 2.0)
110
- byebug
114
+ byebug (~> 11.0)
111
115
  cognito_token_verifier!
112
- rake (>= 10.0, < 13.0)
116
+ rake (>= 10.0, < 14.0)
113
117
  rspec-rails (~> 3.0)
114
118
 
115
119
  BUNDLED WITH
116
- 2.0.1
120
+ 2.1.4
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # CognitoTokenVerifier [![Build Status](https://travis-ci.org/CodingAnarchy/cognito_token_verifier.svg?branch=master)](https://travis-ci.org/CodingAnarchy/cognito_token_verifier)
2
2
 
3
- Verify and decode AWS Cognito tokens for use in your Ruby application.
3
+ Verify and decode AWS Cognito tokens for use in your Rails 5.2+ application. Rails versions <= 5.2 are incompatible with the required gemspec as of 0.4+, as they are no longer supported for security fixes by the Rails team.
4
4
 
5
5
  ## Installation
6
6
 
@@ -12,6 +12,7 @@ Gem::Specification.new do |spec|
12
12
  spec.summary = %q{Verify and parse AWS Cognito JWTs to authenticate endpoints}
13
13
  spec.homepage = "https://github.com/CodingAnarchy/cognito_token_verifier"
14
14
  spec.license = "MIT"
15
+ spec.required_ruby_version = ">= 2.3.8"
15
16
 
16
17
  # Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
17
18
  # to allow pushing to a single host or delete this section to allow pushing to any host.
@@ -30,13 +31,13 @@ Gem::Specification.new do |spec|
30
31
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
31
32
  spec.require_paths = ["lib"]
32
33
 
33
- spec.add_runtime_dependency "activesupport", [">= 4.2", "< 6.0"]
34
- spec.add_runtime_dependency "json-jwt", "~> 1.1"
34
+ spec.add_runtime_dependency "activesupport", [">= 5.2", "< 6.1"]
35
+ spec.add_runtime_dependency "json-jwt", "~> 1.11"
35
36
  spec.add_runtime_dependency "rest-client", "~> 2.0"
36
37
 
37
38
  spec.add_development_dependency "byebug", "~> 11.0"
38
39
  spec.add_development_dependency "bundler", "~> 2.0"
39
- spec.add_development_dependency "rake", [">= 10.0", "< 13.0"]
40
+ spec.add_development_dependency "rake", [">= 10.0", "< 14.0"]
40
41
  spec.add_development_dependency "rspec-rails", "~> 3.0"
41
- spec.add_development_dependency "actionpack", [">= 4.2", "< 6.0"]
42
+ spec.add_development_dependency "actionpack", [">= 5.2", "< 6.1"]
42
43
  end
@@ -1,7 +1,7 @@
1
1
  source "https://rubygems.org"
2
2
 
3
3
  gem "activesupport", "~> 5.2.0"
4
- gem "json-jwt", "~> 1.1"
4
+ gem "json-jwt", "~> 1.11"
5
5
  gem "rest-client", "~> 2.0"
6
6
 
7
7
  gem "byebug"
@@ -1,11 +1,11 @@
1
1
  source "https://rubygems.org"
2
2
 
3
- gem "activesupport", "~> 4.2.0"
4
- gem "json-jwt", "~> 1.1"
3
+ gem "activesupport", "~> 6.0.0"
4
+ gem "json-jwt", "~> 1.11"
5
5
  gem "rest-client", "~> 2.0"
6
6
 
7
7
  gem "byebug"
8
8
  gem "bundler", "~> 2.0"
9
- gem "rake", "~> 10.0"
9
+ gem "rake", "~> 12.0"
10
10
  gem "rspec-rails", "~> 3.0"
11
- gem "actionpack", "~> 4.2.0"
11
+ gem "actionpack", "~> 6.0.0"
@@ -20,9 +20,12 @@ module CognitoTokenVerifier
20
20
  end
21
21
 
22
22
  def jwks
23
- raise ConfigSetupError.new(self) unless aws_region.present? and user_pool_id.present?
24
- @jwks ||= JSON.parse(RestClient.get(jwk_url))
25
- # TODO: rescue RestClient and JSON errors here to present a more user-friendly error
23
+ begin
24
+ raise ConfigSetupError.new(self) unless aws_region.present? and user_pool_id.present?
25
+ @jwks ||= JSON.parse(RestClient.get(jwk_url))
26
+ rescue RestClient::Exception, JSON::JSONError => e
27
+ raise JWKFetchError
28
+ end
26
29
  end
27
30
 
28
31
  def iss
@@ -12,11 +12,23 @@ module CognitoTokenVerifier
12
12
  end
13
13
  end
14
14
 
15
+ class JWKFetchError < StandardError
16
+ def message
17
+ "Error fetching JWKs for your Cognito user pool. Please verify your configuration of the CognitoTokenVerifier gem."
18
+ end
19
+ end
20
+
15
21
  class TokenMissing < CognitoTokenVerifier::Error
16
22
  def message
17
23
  "Cognito token not provided. Please retransmit request with Cognito token in authorization header."
18
24
  end
19
25
  end
26
+
27
+ class TokenDecodingError < CognitoTokenVerifier::Error
28
+ def message
29
+ "Cognito token could not be decoded. Please ensure the request token is from the correct Cognito user pool and try again."
30
+ end
31
+ end
20
32
 
21
33
  class TokenExpired < StandardError
22
34
  def message
@@ -5,10 +5,13 @@ module CognitoTokenVerifier
5
5
  attr_reader :header, :decoded_token
6
6
 
7
7
  def initialize(jwt)
8
- @header= JSON.parse(Base64.decode64(jwt.split('.')[0]))
9
- @jwk = JSON::JWK.new(CognitoTokenVerifier.config.jwks["keys"].detect{|jwk| jwk['kid'] == header['kid']})
10
- @decoded_token = JSON::JWT.decode(jwt, @jwk)
11
- # TODO: rescue errors for JSON/JWK/JWT parsing/decoding to present user-friendly "token could not be decoded" error
8
+ begin
9
+ @header= JSON.parse(Base64.decode64(jwt.split('.')[0]))
10
+ @jwk = JSON::JWK.new(CognitoTokenVerifier.config.jwks["keys"].detect{|jwk| jwk['kid'] == header['kid']})
11
+ @decoded_token = JSON::JWT.decode(jwt, @jwk)
12
+ rescue JSON::JWS::VerificationFailed, JSON::JSONError => e
13
+ raise TokenDecodingError
14
+ end
12
15
  end
13
16
 
14
17
  def expired?
@@ -1,3 +1,3 @@
1
1
  module CognitoTokenVerifier
2
- VERSION = "0.1.0"
2
+ VERSION = "0.4.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cognito_token_verifier
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matt Tanous
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-02-20 00:00:00.000000000 Z
11
+ date: 2020-09-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -16,34 +16,34 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '4.2'
19
+ version: '5.2'
20
20
  - - "<"
21
21
  - !ruby/object:Gem::Version
22
- version: '6.0'
22
+ version: '6.1'
23
23
  type: :runtime
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: '4.2'
29
+ version: '5.2'
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
- version: '6.0'
32
+ version: '6.1'
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: json-jwt
35
35
  requirement: !ruby/object:Gem::Requirement
36
36
  requirements:
37
37
  - - "~>"
38
38
  - !ruby/object:Gem::Version
39
- version: '1.1'
39
+ version: '1.11'
40
40
  type: :runtime
41
41
  prerelease: false
42
42
  version_requirements: !ruby/object:Gem::Requirement
43
43
  requirements:
44
44
  - - "~>"
45
45
  - !ruby/object:Gem::Version
46
- version: '1.1'
46
+ version: '1.11'
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rest-client
49
49
  requirement: !ruby/object:Gem::Requirement
@@ -95,7 +95,7 @@ dependencies:
95
95
  version: '10.0'
96
96
  - - "<"
97
97
  - !ruby/object:Gem::Version
98
- version: '13.0'
98
+ version: '14.0'
99
99
  type: :development
100
100
  prerelease: false
101
101
  version_requirements: !ruby/object:Gem::Requirement
@@ -105,7 +105,7 @@ dependencies:
105
105
  version: '10.0'
106
106
  - - "<"
107
107
  - !ruby/object:Gem::Version
108
- version: '13.0'
108
+ version: '14.0'
109
109
  - !ruby/object:Gem::Dependency
110
110
  name: rspec-rails
111
111
  requirement: !ruby/object:Gem::Requirement
@@ -126,21 +126,21 @@ dependencies:
126
126
  requirements:
127
127
  - - ">="
128
128
  - !ruby/object:Gem::Version
129
- version: '4.2'
129
+ version: '5.2'
130
130
  - - "<"
131
131
  - !ruby/object:Gem::Version
132
- version: '6.0'
132
+ version: '6.1'
133
133
  type: :development
134
134
  prerelease: false
135
135
  version_requirements: !ruby/object:Gem::Requirement
136
136
  requirements:
137
137
  - - ">="
138
138
  - !ruby/object:Gem::Version
139
- version: '4.2'
139
+ version: '5.2'
140
140
  - - "<"
141
141
  - !ruby/object:Gem::Version
142
- version: '6.0'
143
- description:
142
+ version: '6.1'
143
+ description:
144
144
  email:
145
145
  - mtanous22@gmail.com
146
146
  executables: []
@@ -159,9 +159,8 @@ files:
159
159
  - bin/console
160
160
  - bin/setup
161
161
  - cognito_token_verifier.gemspec
162
- - gemfiles/rails42.gemfile
163
- - gemfiles/rails51.gemfile
164
162
  - gemfiles/rails52.gemfile
163
+ - gemfiles/rails6.gemfile
165
164
  - lib/cognito_token_verifier.rb
166
165
  - lib/cognito_token_verifier/config.rb
167
166
  - lib/cognito_token_verifier/controller_macros.rb
@@ -175,7 +174,7 @@ metadata:
175
174
  homepage_uri: https://github.com/CodingAnarchy/cognito_token_verifier
176
175
  source_code_uri: https://github.com/CodingAnarchy/cognito_token_verifier
177
176
  changelog_uri: https://github.com/CodingAnarchy/cognito_token_verifier/blob/master/CHANGELOG.md
178
- post_install_message:
177
+ post_install_message:
179
178
  rdoc_options: []
180
179
  require_paths:
181
180
  - lib
@@ -183,16 +182,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
183
182
  requirements:
184
183
  - - ">="
185
184
  - !ruby/object:Gem::Version
186
- version: '0'
185
+ version: 2.3.8
187
186
  required_rubygems_version: !ruby/object:Gem::Requirement
188
187
  requirements:
189
188
  - - ">="
190
189
  - !ruby/object:Gem::Version
191
190
  version: '0'
192
191
  requirements: []
193
- rubyforge_project:
194
- rubygems_version: 2.7.8
195
- signing_key:
192
+ rubygems_version: 3.0.3
193
+ signing_key:
196
194
  specification_version: 4
197
195
  summary: Verify and parse AWS Cognito JWTs to authenticate endpoints
198
196
  test_files: []
@@ -1,11 +0,0 @@
1
- source "https://rubygems.org"
2
-
3
- gem "activesupport", "~> 5.1.0"
4
- gem "json-jwt", "~> 1.1"
5
- gem "rest-client", "~> 2.0"
6
-
7
- gem "byebug"
8
- gem "bundler", "~> 2.0"
9
- gem "rake", "~> 11.0"
10
- gem "rspec-rails", "~> 3.0"
11
- gem "actionpack", "~> 5.1.0"