doorkeeper-jwt 0.2.1 → 0.3.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 +4 -4
- data/.gitignore +1 -0
- data/.rubocop.yml +13 -0
- data/.travis.yml +4 -4
- data/CHANGELOG.md +10 -0
- data/Gemfile +0 -1
- data/README.md +18 -10
- data/Rakefile +2 -2
- data/doorkeeper-jwt.gemspec +6 -7
- data/lib/doorkeeper-jwt.rb +5 -3
- data/lib/doorkeeper-jwt/config.rb +11 -8
- data/lib/doorkeeper-jwt/doorkeeper-jwt.rb +3 -1
- data/lib/doorkeeper-jwt/version.rb +16 -1
- metadata +22 -21
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 64ffd893f885b14b10051ffdf40d0c7cce87dbfa
|
4
|
+
data.tar.gz: 4c18d275274d40a52694984a4cb68a9fd14b6962
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9860fc149da0ca854fc47872c78b86dfbca10e09cfddc59e24c74c4edf80d8688f86a4167d5ec72b1be75ce044f1f361ccbacd1d1a790891cd4f6a966f64af5f
|
7
|
+
data.tar.gz: 6a39bc5136d5ce4dbdf72b43a006403d10c70383445ae30bd61ae0eb16dd03aa0d66b4e116872cca8c0e6cff694cb832bd24e7a669fd973ccaa210a5444438bf
|
data/.gitignore
CHANGED
data/.rubocop.yml
ADDED
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -4,10 +4,20 @@ 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.0] - 2018-10-01
|
8
|
+
|
9
|
+
### Added
|
10
|
+
|
11
|
+
- Bump JWT gem version. Via [#27](https://github.com/doorkeeper-gem/doorkeeper-jwt/pull/27) by [@pacop](https://github.com/pacop/)
|
12
|
+
|
7
13
|
## [0.2.1] - 2017-06-07
|
14
|
+
|
8
15
|
### Fixed
|
16
|
+
|
9
17
|
- The `token_headers` proc now passes `opts` like the other config methods. Fixed via #19 by @travisofthenorth.
|
10
18
|
|
11
19
|
## [0.2.0] - 2017-05-25
|
20
|
+
|
12
21
|
### Added
|
22
|
+
|
13
23
|
- Added support for ["kid" (Key ID) Header Parameter](https://tools.ietf.org/html/rfc7515#section-4.1.4) @travisofthenorth. Allows custom token headers.
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -1,10 +1,11 @@
|
|
1
|
-
[](https://coveralls.io/github/doorkeeper-gem/doorkeeper-jwt?branch=master)
|
2
|
+
[](https://travis-ci.org/doorkeeper-gem/doorkeeper-jwt)
|
3
|
+
[](https://codeclimate.com/github/doorkeeper-gem/doorkeeper-jwt/maintainability)
|
4
4
|
|
5
5
|
# Doorkeeper::JWT
|
6
6
|
|
7
|
-
Doorkeeper JWT adds JWT token support to the Doorkeeper OAuth library.
|
7
|
+
Doorkeeper JWT adds JWT token support to the Doorkeeper OAuth library. Confirmed to work with Doorkeeper 2.2.x - 4.x.
|
8
|
+
Untested with later versions of Doorkeeper.
|
8
9
|
|
9
10
|
```ruby
|
10
11
|
gem 'doorkeeper'
|
@@ -31,7 +32,7 @@ Or install it yourself as:
|
|
31
32
|
In your `doorkeeper.rb` initializer add the follow to the `Doorkeeper.configure` block:
|
32
33
|
|
33
34
|
```ruby
|
34
|
-
access_token_generator
|
35
|
+
access_token_generator '::Doorkeeper::JWT'
|
35
36
|
```
|
36
37
|
|
37
38
|
Then add a `Doorkeeper::JWT.configure` block below the `Doorkeeper.configure` block to set your JWT preferences.
|
@@ -46,6 +47,10 @@ Doorkeeper::JWT.configure do
|
|
46
47
|
user = User.find(opts[:resource_owner_id])
|
47
48
|
|
48
49
|
{
|
50
|
+
iss: 'My App',
|
51
|
+
iat: Time.current.utc.to_i,
|
52
|
+
jti: SecureRandom.uuid, # @see JWT reserved claims - https://tools.ietf.org/html/draft-jones-json-web-token-07#page-7
|
53
|
+
|
49
54
|
user: {
|
50
55
|
id: user.id,
|
51
56
|
email: user.email
|
@@ -68,14 +73,14 @@ Doorkeeper::JWT.configure do
|
|
68
73
|
# Set the encryption secret. This would be shared with any other applications
|
69
74
|
# that should be able to read the payload of the token.
|
70
75
|
# Defaults to "secret"
|
71
|
-
secret_key
|
76
|
+
secret_key ENV['JWT_SECRET']
|
72
77
|
|
73
78
|
# If you want to use RS* encoding specify the path to the RSA key
|
74
79
|
# to use for signing.
|
75
80
|
# If you specify a secret_key_path it will be used instead of secret_key
|
76
|
-
secret_key_path
|
81
|
+
secret_key_path File.join('path', 'to', 'file.pem')
|
77
82
|
|
78
|
-
# Specify encryption type. Supports any
|
83
|
+
# Specify encryption type. Supports any algorithm in
|
79
84
|
# https://github.com/progrium/ruby-jwt
|
80
85
|
# defaults to nil
|
81
86
|
encryption_method :hs512
|
@@ -84,9 +89,12 @@ end
|
|
84
89
|
|
85
90
|
## Development
|
86
91
|
|
87
|
-
After checking out the repo, run `bin/setup` to install dependencies. Then, run `bin/console` for an interactive
|
92
|
+
After checking out the repo, run `bin/setup` to install dependencies. Then, run `bin/console` for an interactive
|
93
|
+
prompt that will allow you to experiment.
|
88
94
|
|
89
|
-
To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update
|
95
|
+
To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update
|
96
|
+
the version number in `version.rb`, and then run `bundle exec rake release` to create a git tag for the
|
97
|
+
version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
|
90
98
|
|
91
99
|
## Contributing
|
92
100
|
|
data/Rakefile
CHANGED
data/doorkeeper-jwt.gemspec
CHANGED
@@ -1,16 +1,15 @@
|
|
1
|
-
|
2
|
-
lib = File.expand_path('../lib', __FILE__)
|
1
|
+
lib = File.expand_path('lib', __dir__)
|
3
2
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
3
|
require 'doorkeeper-jwt/version'
|
5
4
|
|
6
5
|
Gem::Specification.new do |spec|
|
7
6
|
spec.name = "doorkeeper-jwt"
|
8
|
-
spec.version = Doorkeeper::JWT
|
7
|
+
spec.version = Doorkeeper::JWT.gem_version
|
9
8
|
spec.authors = ["Chris Warren"]
|
10
9
|
spec.email = ["chris@expectless.com"]
|
11
10
|
|
12
|
-
spec.summary =
|
13
|
-
spec.description =
|
11
|
+
spec.summary = 'JWT token generator for Doorkeeper'
|
12
|
+
spec.description = 'JWT token generator extension for Doorkeeper'
|
14
13
|
spec.homepage = "https://github.com/chriswarren/doorkeeper-jwt"
|
15
14
|
spec.license = "MIT"
|
16
15
|
|
@@ -19,10 +18,10 @@ Gem::Specification.new do |spec|
|
|
19
18
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
20
19
|
spec.require_paths = ["lib"]
|
21
20
|
|
22
|
-
spec.add_dependency "jwt", "~> 1.
|
21
|
+
spec.add_dependency "jwt", "~> 2.1.0", ">= 2.1.0"
|
23
22
|
|
24
23
|
spec.add_development_dependency "bundler", "~> 1.8", ">= 1.8"
|
24
|
+
spec.add_development_dependency "pry", "~> 0"
|
25
25
|
spec.add_development_dependency "rake", "~> 10.0", ">= 10.0"
|
26
26
|
spec.add_development_dependency "rspec", "~> 3.2.0", ">= 3.2"
|
27
|
-
spec.add_development_dependency "pry", "~> 0"
|
28
27
|
end
|
data/lib/doorkeeper-jwt.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require "doorkeeper-jwt/version"
|
2
4
|
require "doorkeeper-jwt/config"
|
3
5
|
require 'jwt'
|
@@ -41,7 +43,7 @@ module Doorkeeper
|
|
41
43
|
end
|
42
44
|
|
43
45
|
def encryption_method
|
44
|
-
return
|
46
|
+
return "none" unless Doorkeeper::JWT.configuration.encryption_method
|
45
47
|
Doorkeeper::JWT.configuration.encryption_method.to_s.upcase
|
46
48
|
end
|
47
49
|
|
@@ -51,13 +53,13 @@ module Doorkeeper
|
|
51
53
|
|
52
54
|
def application_secret(opts)
|
53
55
|
if opts[:application].nil?
|
54
|
-
|
56
|
+
raise "JWT `use_application_secret` is enabled but application is " \
|
55
57
|
"nil. This can happen if `client_id` was absent in the request " \
|
56
58
|
"params."
|
57
59
|
end
|
58
60
|
|
59
61
|
if opts[:application][:secret].nil?
|
60
|
-
|
62
|
+
raise "JWT `use_application_secret` is enabled but the application " \
|
61
63
|
"secret is nil."
|
62
64
|
end
|
63
65
|
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Doorkeeper
|
2
4
|
module JWT
|
3
5
|
class MissingConfiguration < StandardError
|
@@ -11,7 +13,7 @@ module Doorkeeper
|
|
11
13
|
end
|
12
14
|
|
13
15
|
def self.configuration
|
14
|
-
@config || (
|
16
|
+
@config || (raise MissingConfiguration)
|
15
17
|
end
|
16
18
|
|
17
19
|
class Config
|
@@ -27,7 +29,7 @@ module Doorkeeper
|
|
27
29
|
|
28
30
|
def use_application_secret(use_application_secret)
|
29
31
|
@config.instance_variable_set(
|
30
|
-
|
32
|
+
'@use_application_secret',
|
31
33
|
use_application_secret
|
32
34
|
)
|
33
35
|
end
|
@@ -42,7 +44,8 @@ module Doorkeeper
|
|
42
44
|
|
43
45
|
def encryption_method(encryption_method)
|
44
46
|
@config.instance_variable_set(
|
45
|
-
'@encryption_method', encryption_method
|
47
|
+
'@encryption_method', encryption_method
|
48
|
+
)
|
46
49
|
end
|
47
50
|
end
|
48
51
|
|
@@ -81,17 +84,17 @@ module Doorkeeper
|
|
81
84
|
Builder.instance_eval do
|
82
85
|
define_method name do |*args, &block|
|
83
86
|
# TODO: is builder_class option being used?
|
84
|
-
value =
|
85
|
-
block ? block : args.first
|
86
|
-
else
|
87
|
+
value = if attribute_builder
|
87
88
|
attribute_builder.new(&block).build
|
89
|
+
else
|
90
|
+
block || args.first
|
88
91
|
end
|
89
92
|
|
90
93
|
@config.instance_variable_set(:"@#{attribute}", value)
|
91
94
|
end
|
92
95
|
end
|
93
96
|
|
94
|
-
define_method attribute do
|
97
|
+
define_method attribute do |*|
|
95
98
|
if instance_variable_defined?(:"@#{attribute}")
|
96
99
|
instance_variable_get(:"@#{attribute}")
|
97
100
|
else
|
@@ -110,7 +113,7 @@ module Doorkeeper
|
|
110
113
|
extend Option
|
111
114
|
|
112
115
|
option :token_payload,
|
113
|
-
|
116
|
+
default: proc { { token: SecureRandom.method(:hex) } }
|
114
117
|
option :token_headers, default: proc { {} }
|
115
118
|
option :use_application_secret, default: false
|
116
119
|
option :secret_key, default: nil
|
@@ -1,5 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Doorkeeper
|
2
4
|
module JWT
|
3
|
-
|
5
|
+
def self.gem_version
|
6
|
+
Gem::Version.new VERSION::STRING
|
7
|
+
end
|
8
|
+
|
9
|
+
module VERSION
|
10
|
+
# Semantic versioning
|
11
|
+
MAJOR = 0
|
12
|
+
MINOR = 3
|
13
|
+
TINY = 0
|
14
|
+
PRE = nil
|
15
|
+
|
16
|
+
# Full version number
|
17
|
+
STRING = [MAJOR, MINOR, TINY, PRE].compact.join('.')
|
18
|
+
end
|
4
19
|
end
|
5
20
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: doorkeeper-jwt
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chris Warren
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-10-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: jwt
|
@@ -16,20 +16,20 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 1.
|
19
|
+
version: 2.1.0
|
20
20
|
- - ">="
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version: 1.
|
22
|
+
version: 2.1.0
|
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: 1.
|
29
|
+
version: 2.1.0
|
30
30
|
- - ">="
|
31
31
|
- !ruby/object:Gem::Version
|
32
|
-
version: 1.
|
32
|
+
version: 2.1.0
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
34
|
name: bundler
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|
@@ -50,6 +50,20 @@ dependencies:
|
|
50
50
|
- - ">="
|
51
51
|
- !ruby/object:Gem::Version
|
52
52
|
version: '1.8'
|
53
|
+
- !ruby/object:Gem::Dependency
|
54
|
+
name: pry
|
55
|
+
requirement: !ruby/object:Gem::Requirement
|
56
|
+
requirements:
|
57
|
+
- - "~>"
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
version: '0'
|
60
|
+
type: :development
|
61
|
+
prerelease: false
|
62
|
+
version_requirements: !ruby/object:Gem::Requirement
|
63
|
+
requirements:
|
64
|
+
- - "~>"
|
65
|
+
- !ruby/object:Gem::Version
|
66
|
+
version: '0'
|
53
67
|
- !ruby/object:Gem::Dependency
|
54
68
|
name: rake
|
55
69
|
requirement: !ruby/object:Gem::Requirement
|
@@ -90,20 +104,6 @@ dependencies:
|
|
90
104
|
- - ">="
|
91
105
|
- !ruby/object:Gem::Version
|
92
106
|
version: '3.2'
|
93
|
-
- !ruby/object:Gem::Dependency
|
94
|
-
name: pry
|
95
|
-
requirement: !ruby/object:Gem::Requirement
|
96
|
-
requirements:
|
97
|
-
- - "~>"
|
98
|
-
- !ruby/object:Gem::Version
|
99
|
-
version: '0'
|
100
|
-
type: :development
|
101
|
-
prerelease: false
|
102
|
-
version_requirements: !ruby/object:Gem::Requirement
|
103
|
-
requirements:
|
104
|
-
- - "~>"
|
105
|
-
- !ruby/object:Gem::Version
|
106
|
-
version: '0'
|
107
107
|
description: JWT token generator extension for Doorkeeper
|
108
108
|
email:
|
109
109
|
- chris@expectless.com
|
@@ -113,6 +113,7 @@ extra_rdoc_files: []
|
|
113
113
|
files:
|
114
114
|
- ".gitignore"
|
115
115
|
- ".rspec"
|
116
|
+
- ".rubocop.yml"
|
116
117
|
- ".travis.yml"
|
117
118
|
- CHANGELOG.md
|
118
119
|
- Gemfile
|
@@ -146,7 +147,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
146
147
|
version: '0'
|
147
148
|
requirements: []
|
148
149
|
rubyforge_project:
|
149
|
-
rubygems_version: 2.6.
|
150
|
+
rubygems_version: 2.6.11
|
150
151
|
signing_key:
|
151
152
|
specification_version: 4
|
152
153
|
summary: JWT token generator for Doorkeeper
|