cognito_token_verifier 0.1.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
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"