warden-jwt_auth 0.3.6 → 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: 16389e83d59158a9bdc25ed6b00032ae06f9e11fd1bc4f2423354378c9666ca4
4
- data.tar.gz: 6154a01b1e2bbb9d072819e711148535c6b2104dfa028afb1c10e9ad6bff0004
3
+ metadata.gz: '08fbf8be1ea2562fdf818a1903e0c7a7a1bf2ec10de9915de41f419edb48b75c'
4
+ data.tar.gz: 7e12556b1273851e036659028c319399322757a4ba84d5f5ded65081e2e2297a
5
5
  SHA512:
6
- metadata.gz: c5fd71f3387c981a676968e118523a9a28ff0b2dc22e610133bc78a6128539a7ca4094927388fe66aea3cfddaffb3cd95c17a46ca10032aea29c2095675c82b5
7
- data.tar.gz: bc48403765c5e3dc6426559b793b3f8e78a51e6e2953262b42a2b8d0cec0a09380e3fa610ec8bb2efe2c27e29d7eec332f187e88d896b0371a6d7b3bf9155fe9
6
+ metadata.gz: 32022229cd5c21e19f677d4272c09b70a4e551df4ea37dc267f3a935ce428361fc2e3b9e89a8c6976f1f6aee1710e5d8c3e849632d91c18601b76a758b85e149
7
+ data.tar.gz: '028fab1a3abf352782f8d0492a4a5154ab20a0b9f7ae58f921f171582aa935f44e09d68359ad24c731b50af5715105c2fce3f837c537bd0d7012e055dc832281'
@@ -13,3 +13,5 @@ Metrics/BlockLength:
13
13
  - "spec/**/*.rb"
14
14
  Metrics/LineLength:
15
15
  Max: 100
16
+ Naming/RescuedExceptionsVariableName:
17
+ PreferredName: exception
@@ -4,7 +4,11 @@ All notable changes to this project will be documented in this file.
4
4
  The format is based on [Keep a Changelog](http://keepachangelog.com/)
5
5
  and this project adheres to [Semantic Versioning](http://semver.org/).
6
6
 
7
- ## [0.3.6] - 2019-04-29
7
+ ## [0.4.0] - 2019-08-01
8
+ ### Added
9
+ - Allow configuration of the signing algorithm ([19](https://github.com/waiting-for-dev/warden-jwt_auth/pull/19)].
10
+
11
+ ## [0.3.6] - 2019-03-29
8
12
  ### Fixed
9
13
  - Update depencies.
10
14
 
data/README.md CHANGED
@@ -24,7 +24,7 @@ If what you need is a JWT authentication library for [devise](https://github.com
24
24
  ## Installation
25
25
 
26
26
  ```ruby
27
- gem 'warden-jwt_auth', '~> 0.3.5'
27
+ gem 'warden-jwt_auth', '~> 0.3.6'
28
28
  ```
29
29
 
30
30
  And then execute:
@@ -59,7 +59,14 @@ end
59
59
 
60
60
  **Important:** You are encouraged to use a dedicated secret key, different than others in use in your application. If several components share the same secret key, chances that a vulnerability in one of them has a wider impact increase. Also, never share your secrets pushing it to a remote repository, you are better off using an environment variable like in the example.
61
61
 
62
- Currently, HS256 algorithm is the one in use.
62
+ Currently, HS256 algorithm is the default.
63
+ Configure the matching secret and algorithm name to use a different one (e.g. RS256)
64
+ ```ruby
65
+ Warden::JWTAuth.configure do |config|
66
+ config.secret = OpenSSL::PKey::RSA.new(ENV['WARDEN_JWT_SECRET_KEY'])
67
+ config.algorithm = ENV['WARDEN_JWT_ALGORITHM']
68
+ end
69
+ ```
63
70
 
64
71
  ### Warden scopes configuration
65
72
 
@@ -22,6 +22,9 @@ module Warden
22
22
  # The secret used to encode the token
23
23
  setting :secret
24
24
 
25
+ # The algorithm used to encode the token
26
+ setting :algorithm, 'HS256'
27
+
25
28
  # Expiration time for tokens
26
29
  setting :expiration_time, 3600
27
30
 
@@ -4,7 +4,7 @@ module Warden
4
4
  module JWTAuth
5
5
  # Decodes a JWT into a hash payload into a JWT token
6
6
  class TokenDecoder
7
- include JWTAuth::Import['secret']
7
+ include JWTAuth::Import['secret', 'algorithm']
8
8
 
9
9
  # Decodes the payload from a JWT as a hash
10
10
  #
@@ -17,7 +17,7 @@ module Warden
17
17
  JWT.decode(token,
18
18
  secret,
19
19
  true,
20
- algorithm: TokenEncoder::ALG,
20
+ algorithm: algorithm,
21
21
  verify_jti: true)[0]
22
22
  end
23
23
  end
@@ -7,10 +7,7 @@ module Warden
7
7
  # Encodes a payload into a JWT token, adding some configurable
8
8
  # claims
9
9
  class TokenEncoder
10
- include JWTAuth::Import['secret', 'expiration_time']
11
-
12
- # Algorithm used to encode
13
- ALG = 'HS256'
10
+ include JWTAuth::Import['secret', 'algorithm', 'expiration_time']
14
11
 
15
12
  # Encodes a payload into a JWT
16
13
  #
@@ -18,7 +15,7 @@ module Warden
18
15
  # @return [String] JWT
19
16
  def call(payload)
20
17
  payload_to_encode = merge_with_default_claims(payload)
21
- JWT.encode(payload_to_encode, secret, ALG)
18
+ JWT.encode(payload_to_encode, secret, algorithm)
22
19
  end
23
20
 
24
21
  private
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Warden
4
4
  module JWTAuth
5
- VERSION = '0.3.6'
5
+ VERSION = '0.4.0'
6
6
  end
7
7
  end
@@ -1,35 +1,36 @@
1
- # coding: utf-8
2
- lib = File.expand_path('../lib', __FILE__)
1
+ # frozen_string_literal: true
2
+
3
+ lib = File.expand_path('lib', __dir__)
3
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
5
  require 'warden/jwt_auth/version'
5
6
 
6
7
  Gem::Specification.new do |spec|
7
- spec.name = "warden-jwt_auth"
8
+ spec.name = 'warden-jwt_auth'
8
9
  spec.version = Warden::JWTAuth::VERSION
9
- spec.authors = ["Marc Busqué"]
10
- spec.email = ["marc@lamarciana.com"]
10
+ spec.authors = ['Marc Busqué']
11
+ spec.email = ['marc@lamarciana.com']
11
12
 
12
- spec.summary = %q{JWT authentication for Warden.}
13
- spec.description = %q{JWT authentication for Warden, ORM agnostic and accepting the implementation of token revocation strategies.}
14
- spec.homepage = "https://github.com/waiting-for-dev/warden-jwt_auth"
15
- spec.license = "MIT"
13
+ spec.summary = 'JWT authentication for Warden.'
14
+ spec.description = 'JWT authentication for Warden, ORM agnostic and accepting the implementation of token revocation strategies.'
15
+ spec.homepage = 'https://github.com/waiting-for-dev/warden-jwt_auth'
16
+ spec.license = 'MIT'
16
17
 
17
18
  spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
18
- spec.bindir = "exe"
19
+ spec.bindir = 'exe'
19
20
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
20
- spec.require_paths = ["lib"]
21
+ spec.require_paths = ['lib']
21
22
 
22
- spec.add_dependency 'dry-configurable', '~> 0.8'
23
23
  spec.add_dependency 'dry-auto_inject', '~> 0.6'
24
+ spec.add_dependency 'dry-configurable', '~> 0.8'
24
25
  spec.add_dependency 'jwt', '~> 2.1'
25
26
  spec.add_dependency 'warden', '~> 1.2'
26
27
 
27
- spec.add_development_dependency "bundler"
28
- spec.add_development_dependency "rake", "~> 12.3"
29
- spec.add_development_dependency "rspec", "~> 3.8"
30
- spec.add_development_dependency "rack-test", "~> 1.1"
31
- spec.add_development_dependency "pry-byebug", "~> 3.7"
28
+ spec.add_development_dependency 'bundler'
29
+ spec.add_development_dependency 'pry-byebug', '~> 3.7'
30
+ spec.add_development_dependency 'rack-test', '~> 1.1'
31
+ spec.add_development_dependency 'rake', '~> 12.3'
32
+ spec.add_development_dependency 'rspec', '~> 3.8'
32
33
  # Test reporting
33
- spec.add_development_dependency 'simplecov', '~> 0.16'
34
34
  spec.add_development_dependency 'codeclimate-test-reporter', '~> 1.0'
35
- end
35
+ spec.add_development_dependency 'simplecov', '~> 0.16'
36
+ end
metadata CHANGED
@@ -1,43 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: warden-jwt_auth
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.6
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marc Busqué
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-03-29 00:00:00.000000000 Z
11
+ date: 2019-08-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: dry-configurable
14
+ name: dry-auto_inject
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0.8'
19
+ version: '0.6'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '0.8'
26
+ version: '0.6'
27
27
  - !ruby/object:Gem::Dependency
28
- name: dry-auto_inject
28
+ name: dry-configurable
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '0.6'
33
+ version: '0.8'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '0.6'
40
+ version: '0.8'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: jwt
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -81,89 +81,89 @@ dependencies:
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
- name: rake
84
+ name: pry-byebug
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: '12.3'
89
+ version: '3.7'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: '12.3'
96
+ version: '3.7'
97
97
  - !ruby/object:Gem::Dependency
98
- name: rspec
98
+ name: rack-test
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: '3.8'
103
+ version: '1.1'
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
- version: '3.8'
110
+ version: '1.1'
111
111
  - !ruby/object:Gem::Dependency
112
- name: rack-test
112
+ name: rake
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
115
  - - "~>"
116
116
  - !ruby/object:Gem::Version
117
- version: '1.1'
117
+ version: '12.3'
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
122
  - - "~>"
123
123
  - !ruby/object:Gem::Version
124
- version: '1.1'
124
+ version: '12.3'
125
125
  - !ruby/object:Gem::Dependency
126
- name: pry-byebug
126
+ name: rspec
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
129
  - - "~>"
130
130
  - !ruby/object:Gem::Version
131
- version: '3.7'
131
+ version: '3.8'
132
132
  type: :development
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
136
  - - "~>"
137
137
  - !ruby/object:Gem::Version
138
- version: '3.7'
138
+ version: '3.8'
139
139
  - !ruby/object:Gem::Dependency
140
- name: simplecov
140
+ name: codeclimate-test-reporter
141
141
  requirement: !ruby/object:Gem::Requirement
142
142
  requirements:
143
143
  - - "~>"
144
144
  - !ruby/object:Gem::Version
145
- version: '0.16'
145
+ version: '1.0'
146
146
  type: :development
147
147
  prerelease: false
148
148
  version_requirements: !ruby/object:Gem::Requirement
149
149
  requirements:
150
150
  - - "~>"
151
151
  - !ruby/object:Gem::Version
152
- version: '0.16'
152
+ version: '1.0'
153
153
  - !ruby/object:Gem::Dependency
154
- name: codeclimate-test-reporter
154
+ name: simplecov
155
155
  requirement: !ruby/object:Gem::Requirement
156
156
  requirements:
157
157
  - - "~>"
158
158
  - !ruby/object:Gem::Version
159
- version: '1.0'
159
+ version: '0.16'
160
160
  type: :development
161
161
  prerelease: false
162
162
  version_requirements: !ruby/object:Gem::Requirement
163
163
  requirements:
164
164
  - - "~>"
165
165
  - !ruby/object:Gem::Version
166
- version: '1.0'
166
+ version: '0.16'
167
167
  description: JWT authentication for Warden, ORM agnostic and accepting the implementation
168
168
  of token revocation strategies.
169
169
  email: