doorkeeper-device_authorization_grant 0.2.1 → 1.0.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: 87c9de51f80c701da39179d542265e15fc426cefdff8b7b70827305d27c89a16
4
- data.tar.gz: '028cb5145903789550175cb6acdec567a214d4b84186d9e08fb9274b4016a4f3'
3
+ metadata.gz: 32ee06252abdee845d51559423b8acb6c52e95d6114a77829281fbfbe3b92cb2
4
+ data.tar.gz: 7808d08e1884a3e8755477a66527218fcde0a939d7c9c0aa896ff995255b1f9a
5
5
  SHA512:
6
- metadata.gz: 667775d114f8a4559eaf84e84e8806acbdae0555bacb57db2c13a73d07dc447a60a2e135b837ffb42382e403f43774ce02f9933e619a0a6a28b291f771898f33
7
- data.tar.gz: d8e6b3a77372b2dfe23e4a5f65d669878403b3ed803e1b66861d9c8c1279d3b7ecad1c97313a74475bd0a2ecc107e81410f74f9bf5de259a94a1292d48b1701c
6
+ metadata.gz: 0774bd3547873749fc1f5e0f6e76ccbe600809e085b290d776e53ebc88f4269e4199e6bc309ecd773952f93c73dadb4011d3b9cf69e4690b34034ce96e3afc06
7
+ data.tar.gz: be2761dd89889be684363b1f33ca69774f059baff4fddf4056e9b83d8037d06f6b0fd64c36ee2d95c51e2536121f613b5a982f7fc6da909196b82c8ed2be7bef
data/MIT-LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright 2020 EXOP Group
1
+ Copyright 2020-2021 EXOP Group
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
data/README.md CHANGED
@@ -7,17 +7,6 @@ This library implements the OAuth 2.0 device authorization grant
7
7
  [Ruby on Rails](https://rubyonrails.org/) applications on top of the
8
8
  [Doorkeeper](https://github.com/doorkeeper-gem/doorkeeper) OAuth 2.0 framework.
9
9
 
10
- ## Status
11
-
12
- This extension currently works with Doorkeeper version `>= 5.4.0`.
13
-
14
- As of June 25 2020, due to some limitations of Doorkeeper, it is currently
15
- inconvenient for this Gem to use the official OAuth grant type
16
- `urn:ietf:params:oauth:grant-type:device_code`. Instead, it has been renamed
17
- to simply `device_code`, which is non-standard. This is going to be corrected
18
- soon: the next Doorkeeper release will include the ability to cleanly
19
- register custom Grant Flows - see [Doorkeeper Pull Request #1418](https://github.com/doorkeeper-gem/doorkeeper/pull/1418).
20
-
21
10
  ## Installation
22
11
 
23
12
  Add this line to your application's Gemfile:
@@ -55,7 +44,7 @@ $ rails doorkeeper_device_authorization_grant_engine:install:migrations
55
44
  ### Doorkeeper configuration
56
45
 
57
46
  In your Doorkeeper initializer (usually `config/initializers/doorkeeper.rb`), enable
58
- the device flow extension grant type, adding to the `grant_flows` option the `device_code`
47
+ the new grant flow extension, adding to the `grant_flows` option the `device_code`
59
48
  string. For example:
60
49
 
61
50
  ```ruby
@@ -65,9 +54,6 @@ string. For example:
65
54
  # ...
66
55
 
67
56
  grant_flows [
68
- # Note: this is a non-standard grant flow, used instead of the
69
- # official `urn:ietf:params:oauth:grant-type:device_code` due to
70
- # current Doorkeeper limitations.
71
57
  'device_code',
72
58
 
73
59
  # together with all the other grant flows you already enabled, for example:
@@ -80,11 +66,6 @@ string. For example:
80
66
  end
81
67
  ```
82
68
 
83
- Please note that **this is not the official grant flow**. The real one should be
84
- the IANA URN `urn:ietf:params:oauth:grant-type:device_code`, however this is hard
85
- to support with the current version of Doorkeeper, due to how strategy classes are
86
- looked up by grant type value.
87
-
88
69
  ### Device Authorization Grant configuration
89
70
 
90
71
  The gem's installation scripts automatically creates a new initializer file:
@@ -237,15 +218,11 @@ by Dorkeeper), for example:
237
218
  POST /oauth/token HTTP/1.1
238
219
  Content-Type: application/x-www-form-urlencoded
239
220
 
240
- grant_type=device_code
221
+ grant_type=urn:ietf:params:oauth:grant-type:device_code
241
222
  &device_code=GmRhmhcxhwAzkoEqiMEg_DnyEysNkuNhszIySk9eS
242
223
  &client_id=1406020730
243
224
  ```
244
225
 
245
- **Note:** this is a non-standard `grant_type`, used instead of the official
246
- `urn:ietf:params:oauth:grant-type:device_code` due to current limitations of
247
- the Doorkeeper gem.
248
-
249
226
  The response to this request is defined in the next section. It is expected for
250
227
  the *Device Client* to try the access token request repeatedly in a polling
251
228
  fashion, based on the error code in the response. The polling time interval
data/Rakefile CHANGED
@@ -1,20 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- begin
4
- require 'bundler/setup'
5
- rescue LoadError
6
- puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
7
- end
8
-
9
- require 'rdoc/task'
10
-
11
- RDoc::Task.new(:rdoc) do |rdoc|
12
- rdoc.rdoc_dir = 'rdoc'
13
- rdoc.title = 'Doorkeeper::DeviceAuthorizationGrant'
14
- rdoc.options << '--line-numbers'
15
- rdoc.rdoc_files.include('README.md')
16
- rdoc.rdoc_files.include('lib/**/*.rb')
17
- end
3
+ require 'bundler/setup'
18
4
 
19
5
  APP_RAKEFILE = File.expand_path('test/dummy/Rakefile', __dir__)
20
6
  load 'rails/tasks/engine.rake'
@@ -5,12 +5,14 @@ require 'active_model'
5
5
  require 'doorkeeper/device_authorization_grant/config'
6
6
  require 'doorkeeper/device_authorization_grant/engine'
7
7
 
8
+ # Doorkeeper namespace
8
9
  module Doorkeeper
9
10
  # OAuth 2.0 Device Authorization Grant extension for Doorkeeper.
10
11
  module DeviceAuthorizationGrant
11
12
  autoload :DeviceGrant, 'doorkeeper/device_authorization_grant/orm/active_record/device_grant'
12
13
  autoload :DeviceGrantMixin, 'doorkeeper/device_authorization_grant/orm/active_record/device_grant_mixin'
13
14
  autoload :Errors, 'doorkeeper/device_authorization_grant/errors'
15
+ autoload :OAuth, 'doorkeeper/device_authorization_grant/oauth'
14
16
  autoload :VERSION, 'doorkeeper/device_authorization_grant/version'
15
17
 
16
18
  # Namespace for device authorization request strategies
@@ -45,4 +47,10 @@ module Doorkeeper
45
47
  module Request
46
48
  autoload :DeviceCode, 'doorkeeper/request/device_code'
47
49
  end
50
+
51
+ Doorkeeper::GrantFlow.register(
52
+ :device_code,
53
+ grant_type_matches: Doorkeeper::DeviceAuthorizationGrant::OAuth::DEVICE_CODE,
54
+ grant_type_strategy: Doorkeeper::Request::DeviceCode
55
+ )
48
56
  end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Doorkeeper
4
+ module DeviceAuthorizationGrant
5
+ module OAuth
6
+ # IANA URN of the Device Authorization Grant Type.
7
+ # @see https://tools.ietf.org/html/rfc8628#section-7.2 RFC 8628 - 7.2. OAuth URI Registration
8
+ DEVICE_CODE = 'urn:ietf:params:oauth:grant-type:device_code'
9
+ public_constant :DEVICE_CODE
10
+ end
11
+ end
12
+ end
@@ -27,8 +27,7 @@ module Doorkeeper
27
27
  @client = client
28
28
  @device_grant = device_grant
29
29
 
30
- # this should be `urn:ietf:params:oauth:grant-type:device_code`
31
- @grant_type = 'device_code'
30
+ @grant_type = Doorkeeper::DeviceAuthorizationGrant::OAuth::DEVICE_CODE
32
31
  end
33
32
 
34
33
  def before_successful_response
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Doorkeeper
4
4
  module DeviceAuthorizationGrant
5
- VERSION = '0.2.1'
5
+ VERSION = '1.0.0'
6
6
  public_constant :VERSION
7
7
  end
8
8
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: doorkeeper-device_authorization_grant
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - EXOP Group
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-01-13 00:00:00.000000000 Z
11
+ date: 2021-05-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: doorkeeper
@@ -16,56 +16,62 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '5.4'
19
+ version: '5.5'
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: '5.4'
26
+ version: '5.5'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rubocop
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '1.8'
33
+ version: '1.14'
34
34
  type: :development
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: '1.8'
40
+ version: '1.14'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rubocop-rails
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 2.9.1
47
+ version: '2.10'
48
+ - - ">="
49
+ - !ruby/object:Gem::Version
50
+ version: 2.10.1
48
51
  type: :development
49
52
  prerelease: false
50
53
  version_requirements: !ruby/object:Gem::Requirement
51
54
  requirements:
52
55
  - - "~>"
53
56
  - !ruby/object:Gem::Version
54
- version: 2.9.1
57
+ version: '2.10'
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: 2.10.1
55
61
  - !ruby/object:Gem::Dependency
56
62
  name: simplecov
57
63
  requirement: !ruby/object:Gem::Requirement
58
64
  requirements:
59
65
  - - "~>"
60
66
  - !ruby/object:Gem::Version
61
- version: 0.21.1
67
+ version: 0.21.2
62
68
  type: :development
63
69
  prerelease: false
64
70
  version_requirements: !ruby/object:Gem::Requirement
65
71
  requirements:
66
72
  - - "~>"
67
73
  - !ruby/object:Gem::Version
68
- version: 0.21.1
74
+ version: 0.21.2
69
75
  - !ruby/object:Gem::Dependency
70
76
  name: sqlite3
71
77
  requirement: !ruby/object:Gem::Requirement
@@ -113,6 +119,7 @@ files:
113
119
  - lib/doorkeeper/device_authorization_grant/config.rb
114
120
  - lib/doorkeeper/device_authorization_grant/engine.rb
115
121
  - lib/doorkeeper/device_authorization_grant/errors.rb
122
+ - lib/doorkeeper/device_authorization_grant/oauth.rb
116
123
  - lib/doorkeeper/device_authorization_grant/oauth/device_authorization_request.rb
117
124
  - lib/doorkeeper/device_authorization_grant/oauth/device_authorization_response.rb
118
125
  - lib/doorkeeper/device_authorization_grant/oauth/device_code_request.rb
@@ -131,7 +138,10 @@ files:
131
138
  homepage: https://github.com/exop-group/doorkeeper-device_authorization_grant
132
139
  licenses:
133
140
  - MIT
134
- metadata: {}
141
+ metadata:
142
+ homepage_uri: https://github.com/exop-group/doorkeeper-device_authorization_grant
143
+ source_code_uri: https://github.com/exop-group/doorkeeper-device_authorization_grant
144
+ changelog_uri: https://github.com/exop-group/doorkeeper-device_authorization_grant/blob/master/CHANGELOG.md
135
145
  post_install_message:
136
146
  rdoc_options: []
137
147
  require_paths:
@@ -147,7 +157,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
147
157
  - !ruby/object:Gem::Version
148
158
  version: '0'
149
159
  requirements: []
150
- rubygems_version: 3.1.2
160
+ rubygems_version: 3.2.15
151
161
  signing_key:
152
162
  specification_version: 4
153
163
  summary: OAuth 2.0 Device Authorization Grant extension for Doorkeeper.