doorkeeper-openid_connect 1.7.2 → 1.8.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: dd500337bf3593b1f15ab64da67dd2da940797271fd1a169e47f2542371d6930
4
- data.tar.gz: 4c3fdae9aca104f74f2bcf2e2805d09fe784e75326e3fa2382de8ba74133987a
3
+ metadata.gz: 13bf3ad72ee7edeeb5158fcf2c63193b6c8b2982070ccfbdce9a2e1854771da1
4
+ data.tar.gz: aa425930d99cef5997fbab6d02c3d6c18e2149f1ccd288afcfbc5e1d5b4f7a18
5
5
  SHA512:
6
- metadata.gz: 887f767a61bd22be260dfb2b3d37de2e3334b25ff53aacbf9b6b41aecb88a287ae308d9fd65950e7c850ab023569d08cb1c31cceda4182cb667c3b61a984406e
7
- data.tar.gz: 670454a6c3e5dbe69dcb511e68acbb63b2b558410a3ae0268400918dd11e3ae4d320fb1bd7d876cade2b7313132c925befcd51ad0bd023bfb826f36ee9d127b9
6
+ metadata.gz: bab714902ba2fb3085687a08bd3fbe7c4d28d704ef94efa2aaf41863e7bf8554b3d1db7fcabe3d651280f91015aa835fd9e269a9b4bd5225e9357cfaa51f5de6
7
+ data.tar.gz: 5ecaabb2d7382974e4bc295a758f63bf3fa4e4f834b9e148671cbfa2de7aeb41452a4d8efbc49f6c7e7adaccc8f40c356b5710bf0fd9d9eca736d6b1c5268ab2
data/CHANGELOG.md CHANGED
@@ -1,5 +1,46 @@
1
1
  ## Unreleased
2
2
 
3
+ ## v1.8.0 (2021-05-11)
4
+
5
+ No changes from v1.8.0-rc1.
6
+
7
+ ## v1.8.0-rc1 (2021-04-20)
8
+
9
+ ### Upgrading
10
+
11
+ This gem now requires Doorkeeper 5.5 and Ruby 2.5.
12
+
13
+ ### Changes
14
+
15
+ - [#138] Support form_post response mode (thanks to @linhdangduy)
16
+ - [#144] Support block syntax for `issuer` configuration (thanks to @maxxsnake)
17
+ - [#145] Register token flows with the strategy instead of the token class (thanks to @paukul)
18
+
19
+ ## v1.7.5 (2020-12-15)
20
+
21
+ ### Changes
22
+
23
+ - [#126] Add discovery_url_options option for discovery endpoints URL generation (thanks to @phlegx)
24
+
25
+ ### Bugfixes
26
+
27
+ - [#123] Remove reference to ApplicationRecord (thanks to @wheeyls)
28
+ - [#124] Clone doorkeeper.grant_flows array before appending 'refresh_token' (thanks to @davidbasalla)
29
+ - [#129] Avoid to use the config alias while supporting Doorkeeper 5.2 (thanks to @kymmt90)
30
+
31
+ ## v1.7.4 (2020-07-06)
32
+
33
+ - [#119] Execute end_session_endpoint in the controllers context (thanks to @joeljunstrom)
34
+
35
+ ## v1.7.3 (2020-07-06)
36
+
37
+ - [#111] Add configuration callback `select_account_for_resource_owner` to support the `prompt=select_account` param
38
+ - [#112] Add grant_types_supported to discovery response
39
+ - [#114] Fix user_info endpoint when used in api mode
40
+ - [#116] Support Doorkeeper API (> 5.4) for registering custom grant flows.
41
+ - [#117] Fix migration template to use Rails migrations DSL for association.
42
+ - [#118] Use fragment urls for implicit flow error redirects (thanks to @joeljunstrom)
43
+
3
44
  ## v1.7.2 (2020-05-20)
4
45
 
5
46
  ### Changes
data/README.md CHANGED
@@ -34,6 +34,7 @@ The following parts of [OpenID Connect Core 1.0](http://openid.net/specs/openid-
34
34
  - [Requesting Claims using Scope Values](http://openid.net/specs/openid-connect-core-1_0.html#ScopeClaims)
35
35
  - [UserInfo Endpoint](http://openid.net/specs/openid-connect-core-1_0.html#UserInfo)
36
36
  - [Normal Claims](http://openid.net/specs/openid-connect-core-1_0.html#NormalClaims)
37
+ - [OAuth 2.0 Form Post Response Mode](https://openid.net/specs/oauth-v2-form-post-response-mode-1_0.html)
37
38
 
38
39
  In addition we also support most of [OpenID Connect Discovery 1.0](http://openid.net/specs/openid-connect-discovery-1_0.html) for automatic configuration discovery.
39
40
 
@@ -103,6 +104,7 @@ The following settings are required in `config/initializers/doorkeeper_openid_co
103
104
 
104
105
  - `issuer`
105
106
  - Identifier for the issuer of the response (i.e. your application URL). The value is a case sensitive URL using the `https` scheme that contains scheme, host, and optionally, port number and path components and no query or fragment components.
107
+ - You can either pass a string value, or a block to generate the issuer dynamically based on the `resource_owner` and `application` passed to the block.
106
108
  - `subject`
107
109
  - Identifier for the resource owner (i.e. the authenticated user). A locally unique and never reassigned identifier within the issuer for the end-user, which is intended to be consumed by the client. The value is a case-sensitive string and must not exceed 255 ASCII characters in length.
108
110
  - The database ID of the user is an acceptable choice if you don't mind leaking that information.
@@ -139,6 +141,10 @@ The following settings are optional, but recommended for better client compatibi
139
141
  - Defines how to trigger reauthentication for the current user (e.g. display a password prompt, or sign-out the user and redirect to the login form).
140
142
  - Required to support the `max_age` and `prompt=login` parameters.
141
143
  - The block is executed in the controller's scope, so you have access to methods like `params`, `redirect_to` etc.
144
+ - `select_account_for_resource_owner`
145
+ - Defines how to trigger account selection to choose the current login user.
146
+ - Required to support the `prompt=select_account` parameter.
147
+ - The block is executed in the controller's scope, so you have access to methods like `params`, `redirect_to` etc.
142
148
 
143
149
  The following settings are optional:
144
150
 
@@ -155,6 +161,36 @@ The following settings are optional:
155
161
  - `end_session_endpoint`
156
162
  - The URL that the user is redirected to after ending the session on the client.
157
163
  - Used by implementations like https://github.com/IdentityModel/oidc-client-js.
164
+ - The block is executed in the controller's scope, so you have access to your route helpers.
165
+
166
+ - `discovery_url_options`
167
+ - The URL options for every available endpoint to use when generating the endpoint URL in the
168
+ discovery response. Available endpoints: `authorization`, `token`, `revocation`,
169
+ `introspection`, `userinfo`, `jwks`, `webfinger`.
170
+ - This option requires option keys with an available endpoint and
171
+ [URL options](https://api.rubyonrails.org/v6.0.3.3/classes/ActionDispatch/Routing/UrlFor.html#method-i-url_for)
172
+ as value.
173
+ - The default is to use the request host, just like all the other URLs in the discovery response.
174
+ - This is useful when you want endpoints to use a different URL than other requests.
175
+ For example, if your Doorkeeper server is behind a firewall with other servers, you might want
176
+ other servers to use an "internal" URL to communicate with Doorkeeper, but you want to present
177
+ an "external" URL to end-users for authentication requests. Note that this setting does not
178
+ actually change the URL that your Doorkeeper server responds on - that is outside the scope of
179
+ Doorkeeper.
180
+
181
+ ```ruby
182
+ # config/initializers/doorkeeper_openid_connect.rb
183
+ Doorkeeper::OpenidConnect.configure do
184
+ # ...
185
+ discovery_url_options do |request|
186
+ {
187
+ authorization: { host: 'host.example.com' },
188
+ jwks: { protocol: request.ssl? ? :https : :http }
189
+ }
190
+ end
191
+ # ...
192
+ end
193
+ ```
158
194
 
159
195
  ### Scopes
160
196
 
@@ -26,28 +26,25 @@ module Doorkeeper
26
26
  openid_connect = ::Doorkeeper::OpenidConnect.configuration
27
27
  {
28
28
  issuer: openid_connect.issuer,
29
- authorization_endpoint: oauth_authorization_url(protocol: protocol),
30
- token_endpoint: oauth_token_url(protocol: protocol),
31
- revocation_endpoint: oauth_revoke_url(protocol: protocol),
32
- introspection_endpoint: oauth_introspect_url(protocol: protocol),
33
- userinfo_endpoint: oauth_userinfo_url(protocol: protocol),
34
- jwks_uri: oauth_discovery_keys_url(protocol: protocol),
35
- end_session_endpoint: openid_connect.end_session_endpoint.call,
29
+ authorization_endpoint: oauth_authorization_url(authorization_url_options),
30
+ token_endpoint: oauth_token_url(token_url_options),
31
+ revocation_endpoint: oauth_revoke_url(revocation_url_options),
32
+ introspection_endpoint: oauth_introspect_url(introspection_url_options),
33
+ userinfo_endpoint: oauth_userinfo_url(userinfo_url_options),
34
+ jwks_uri: oauth_discovery_keys_url(jwks_url_options),
35
+ end_session_endpoint: instance_exec(&openid_connect.end_session_endpoint),
36
36
 
37
37
  scopes_supported: doorkeeper.scopes,
38
38
 
39
39
  # TODO: support id_token response type
40
40
  response_types_supported: doorkeeper.authorization_response_types,
41
- response_modes_supported: ['query', 'fragment'],
41
+ response_modes_supported: response_modes_supported(doorkeeper),
42
+ grant_types_supported: grant_types_supported(doorkeeper),
42
43
 
43
- token_endpoint_auth_methods_supported: [
44
- 'client_secret_basic',
45
- 'client_secret_post',
46
-
47
- # TODO: look into doorkeeper-jwt_assertion for these
48
- # 'client_secret_jwt',
49
- # 'private_key_jwt'
50
- ],
44
+ # TODO: look into doorkeeper-jwt_assertion for these
45
+ # 'client_secret_jwt',
46
+ # 'private_key_jwt'
47
+ token_endpoint_auth_methods_supported: %w[client_secret_basic client_secret_post],
51
48
 
52
49
  subject_types_supported: openid_connect.subject_types_supported,
53
50
 
@@ -73,13 +70,23 @@ module Doorkeeper
73
70
  }.compact
74
71
  end
75
72
 
73
+ def grant_types_supported(doorkeeper)
74
+ grant_types_supported = doorkeeper.grant_flows.dup
75
+ grant_types_supported << 'refresh_token' if doorkeeper.refresh_token_enabled?
76
+ grant_types_supported
77
+ end
78
+
79
+ def response_modes_supported(doorkeeper)
80
+ doorkeeper.authorization_response_flows.flat_map(&:response_mode_matches).uniq
81
+ end
82
+
76
83
  def webfinger_response
77
84
  {
78
85
  subject: params.require(:resource),
79
86
  links: [
80
87
  {
81
88
  rel: WEBFINGER_RELATION,
82
- href: root_url(protocol: protocol),
89
+ href: root_url(webfinger_url_options),
83
90
  }
84
91
  ]
85
92
  }
@@ -101,6 +108,22 @@ module Doorkeeper
101
108
  def protocol
102
109
  Doorkeeper::OpenidConnect.configuration.protocol.call
103
110
  end
111
+
112
+ def discovery_url_options
113
+ Doorkeeper::OpenidConnect.configuration.discovery_url_options.call(request)
114
+ end
115
+
116
+ def discovery_url_default_options
117
+ {
118
+ protocol: protocol
119
+ }
120
+ end
121
+
122
+ %i[authorization token revocation introspection userinfo jwks webfinger].each do |endpoint|
123
+ define_method :"#{endpoint}_url_options" do
124
+ discovery_url_default_options.merge(discovery_url_options[endpoint.to_sym] || {})
125
+ end
126
+ end
104
127
  end
105
128
  end
106
129
  end
@@ -3,7 +3,9 @@
3
3
  module Doorkeeper
4
4
  module OpenidConnect
5
5
  class UserinfoController < ::Doorkeeper::ApplicationController
6
- skip_before_action :verify_authenticity_token
6
+ unless Doorkeeper.configuration.api_only
7
+ skip_before_action :verify_authenticity_token
8
+ end
7
9
  before_action -> { doorkeeper_authorize! :openid }
8
10
 
9
11
  def show
@@ -19,4 +19,5 @@ en:
19
19
  resource_owner_from_access_token_not_configured: 'Failure due to Doorkeeper::OpenidConnect.configure.resource_owner_from_access_token missing configuration.'
20
20
  auth_time_from_resource_owner_not_configured: 'Failure due to Doorkeeper::OpenidConnect.configure.auth_time_from_resource_owner missing configuration.'
21
21
  reauthenticate_resource_owner_not_configured: 'Failure due to Doorkeeper::OpenidConnect.configure.reauthenticate_resource_owner missing configuration.'
22
+ select_account_for_resource_owner_not_configured: 'Failure due to Doorkeeper::OpenidConnect.configure.select_account_for_resource_owner missing configuration.'
22
23
  subject_not_configured: 'ID Token generation failed due to Doorkeeper::OpenidConnect.configure.subject missing configuration.'
@@ -17,19 +17,17 @@ module Doorkeeper
17
17
  true
18
18
  end
19
19
 
20
- def redirect_uri
21
- Authorization::URIBuilder.uri_with_fragment(pre_auth.redirect_uri, redirect_uri_params)
22
- end
23
-
24
- private
25
-
26
- def redirect_uri_params
20
+ def body
27
21
  {
28
22
  expires_in: auth.token.expires_in_seconds,
29
23
  state: pre_auth.state,
30
24
  id_token: id_token.as_jws_token
31
25
  }
32
26
  end
27
+
28
+ def redirect_uri
29
+ Authorization::URIBuilder.uri_with_fragment(pre_auth.redirect_uri, body)
30
+ end
33
31
  end
34
32
  end
35
33
  end
@@ -3,9 +3,7 @@
3
3
  module Doorkeeper
4
4
  module OAuth
5
5
  class IdTokenTokenResponse < IdTokenResponse
6
- private
7
-
8
- def redirect_uri_params
6
+ def body
9
7
  super.merge({
10
8
  access_token: auth.token.token,
11
9
  token_type: auth.token.token_type
@@ -16,7 +16,6 @@ require 'doorkeeper/openid_connect/claims_builder'
16
16
  require 'doorkeeper/openid_connect/claims/claim'
17
17
  require 'doorkeeper/openid_connect/claims/normal_claim'
18
18
  require 'doorkeeper/openid_connect/config'
19
- require 'doorkeeper/openid_connect/response_types_config'
20
19
  require 'doorkeeper/openid_connect/engine'
21
20
  require 'doorkeeper/openid_connect/errors'
22
21
  require 'doorkeeper/openid_connect/id_token'
@@ -63,5 +62,23 @@ module Doorkeeper
63
62
  key.slice(:kty, :kid)
64
63
  end
65
64
  end
65
+
66
+ Doorkeeper::GrantFlow.register(
67
+ :id_token,
68
+ response_type_matches: 'id_token',
69
+ response_mode_matches: %w[fragment form_post],
70
+ response_type_strategy: Doorkeeper::Request::IdToken,
71
+ )
72
+
73
+ Doorkeeper::GrantFlow.register(
74
+ 'id_token token',
75
+ response_type_matches: 'id_token token',
76
+ response_mode_matches: %w[fragment form_post],
77
+ response_type_strategy: Doorkeeper::Request::IdTokenToken,
78
+ )
79
+
80
+ Doorkeeper::GrantFlow.register_alias(
81
+ 'implicit_oidc', as: ['implicit', 'id_token', 'id_token token']
82
+ )
66
83
  end
67
84
  end
@@ -115,6 +115,10 @@ module Doorkeeper
115
115
  raise Errors::InvalidConfiguration, I18n.translate('doorkeeper.openid_connect.errors.messages.reauthenticate_resource_owner_not_configured')
116
116
  }
117
117
 
118
+ option :select_account_for_resource_owner, default: lambda { |*_|
119
+ raise Errors::InvalidConfiguration, I18n.translate('doorkeeper.openid_connect.errors.messages.select_account_for_resource_owner_not_configured')
120
+ }
121
+
118
122
  option :subject, default: lambda { |*_|
119
123
  raise Errors::InvalidConfiguration, I18n.translate('doorkeeper.openid_connect.errors.messages.subject_not_configured')
120
124
  }
@@ -130,6 +134,10 @@ module Doorkeeper
130
134
  option :end_session_endpoint, default: lambda { |*_|
131
135
  nil
132
136
  }
137
+
138
+ option :discovery_url_options, default: lambda { |*_|
139
+ {}
140
+ }
133
141
  end
134
142
  end
135
143
  end
@@ -26,7 +26,6 @@ module Doorkeeper
26
26
  class LoginRequired < OpenidConnectError; end
27
27
  class ConsentRequired < OpenidConnectError; end
28
28
  class InteractionRequired < OpenidConnectError; end
29
- class AccountSelectionRequired < OpenidConnectError; end
30
29
  end
31
30
  end
32
31
  end
@@ -43,22 +43,25 @@ module Doorkeeper
43
43
  name: exception.type,
44
44
  state: params[:state],
45
45
  redirect_uri: params[:redirect_uri],
46
+ response_on_fragment: pre_auth.response_on_fragment?,
46
47
  )
47
48
  else
48
49
  ::Doorkeeper::OAuth::ErrorResponse.new(
49
50
  name: exception.type,
50
51
  state: params[:state],
51
52
  redirect_uri: params[:redirect_uri],
53
+ response_on_fragment: pre_auth.response_on_fragment?,
52
54
  )
53
- end
55
+ end
54
56
 
55
57
  response.headers.merge!(error_response.headers)
56
58
 
57
- if error_response.redirectable?
58
- render json: error_response.body, status: :found, location: error_response.redirect_uri
59
- else
60
- render json: error_response.body, status: error_response.status
61
- end
59
+ # NOTE: Assign error_response to @authorize_response then use redirect_or_render method that are defined at
60
+ # doorkeeper's authorizations_controller.
61
+ # - https://github.com/doorkeeper-gem/doorkeeper/blob/v5.5.0/app/controllers/doorkeeper/authorizations_controller.rb#L110
62
+ # - https://github.com/doorkeeper-gem/doorkeeper/blob/v5.5.0/app/controllers/doorkeeper/authorizations_controller.rb#L52
63
+ @authorize_response = error_response
64
+ redirect_or_render(@authorize_response)
62
65
  end
63
66
 
64
67
  def handle_oidc_prompt_param!(owner)
@@ -75,8 +78,7 @@ module Doorkeeper
75
78
  when 'consent'
76
79
  render :new
77
80
  when 'select_account'
78
- # TODO: let the user implement this
79
- raise Errors::AccountSelectionRequired
81
+ select_account_for_oidc_resource_owner(owner)
80
82
  else
81
83
  raise Errors::InvalidRequest
82
84
  end
@@ -97,16 +99,21 @@ module Doorkeeper
97
99
  end
98
100
  end
99
101
 
100
- def reauthenticate_oidc_resource_owner(owner)
102
+ def return_without_oidc_prompt_param(prompt_value)
101
103
  return_to = URI.parse(request.path)
102
104
  return_to.query = request.query_parameters.tap do |params|
103
- params['prompt'] = params['prompt'].to_s.sub(/\blogin\s*\b/, '').strip
105
+ params['prompt'] = params['prompt'].to_s.sub(/\b#{prompt_value}\s*\b/, '').strip
104
106
  params.delete('prompt') if params['prompt'].blank?
105
107
  end.to_query
108
+ return_to.to_s
109
+ end
110
+
111
+ def reauthenticate_oidc_resource_owner(owner)
112
+ return_to = return_without_oidc_prompt_param('login')
106
113
 
107
114
  instance_exec(
108
115
  owner,
109
- return_to.to_s,
116
+ return_to,
110
117
  &Doorkeeper::OpenidConnect.configuration.reauthenticate_resource_owner
111
118
  )
112
119
 
@@ -116,6 +123,16 @@ module Doorkeeper
116
123
  def oidc_consent_required?
117
124
  !skip_authorization? && !matching_token?
118
125
  end
126
+
127
+ def select_account_for_oidc_resource_owner(owner)
128
+ return_to = return_without_oidc_prompt_param('select_account')
129
+
130
+ instance_exec(
131
+ owner,
132
+ return_to,
133
+ &Doorkeeper::OpenidConnect.configuration.select_account_for_resource_owner
134
+ )
135
+ end
119
136
  end
120
137
  end
121
138
  end
@@ -40,7 +40,11 @@ module Doorkeeper
40
40
  private
41
41
 
42
42
  def issuer
43
- Doorkeeper::OpenidConnect.configuration.issuer
43
+ if Doorkeeper::OpenidConnect.configuration.issuer.respond_to?(:call)
44
+ Doorkeeper::OpenidConnect.configuration.issuer.call(@resource_owner, @access_token.application).to_s
45
+ else
46
+ Doorkeeper::OpenidConnect.configuration.issuer
47
+ end
44
48
  end
45
49
 
46
50
  def subject
@@ -7,29 +7,20 @@ module Doorkeeper
7
7
  attr_reader :nonce
8
8
 
9
9
  def initialize(server, attrs = {}, resource_owner = nil)
10
- if (Doorkeeper::VERSION::MAJOR >= 5 && Doorkeeper::VERSION::MINOR >= 4) ||
11
- Doorkeeper::VERSION::MAJOR >= 6
12
- super
13
- else
14
- super(server, attrs)
15
- end
10
+ super
16
11
  @nonce = attrs[:nonce]
17
12
  end
18
13
 
19
- # This method will be updated when doorkeeper move to version > 5.2.2
20
- # TODO: delete this method and refactor response_on_fragment? method (below) when doorkeeper gem version constrains is > 5.2.2
21
- def error_response
22
- if error == :invalid_request
23
- Doorkeeper::OAuth::InvalidRequestResponse.from_request(self, response_on_fragment: response_on_fragment?)
24
- else
25
- Doorkeeper::OAuth::ErrorResponse.from_request(self, response_on_fragment: response_on_fragment?)
26
- end
27
- end
14
+ # NOTE: Auto get default response_mode of specified response_type if response_mode is not
15
+ # yet present. We can delete this method after Doorkeeper's minimize version support it.
16
+ def response_on_fragment?
17
+ return response_mode == 'fragment' if response_mode.present?
28
18
 
29
- private
19
+ grant_flow = server.authorization_response_flows.detect do |flow|
20
+ flow.matches_response_type?(response_type)
21
+ end
30
22
 
31
- def response_on_fragment?
32
- response_type == 'token' || response_type == 'id_token' || response_type == 'id_token token'
23
+ grant_flow&.default_response_mode == 'fragment'
33
24
  end
34
25
  end
35
26
  end
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Doorkeeper
4
4
  module OpenidConnect
5
- class Request < ApplicationRecord
5
+ class Request < ::ActiveRecord::Base
6
6
  self.table_name = "#{table_name_prefix}oauth_openid_requests#{table_name_suffix}".to_sym
7
7
 
8
8
  validates :access_grant_id, :nonce, presence: true
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Doorkeeper
4
4
  module OpenidConnect
5
- VERSION = '1.7.2'
5
+ VERSION = '1.8.0'
6
6
  end
7
7
  end
@@ -1,7 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  Doorkeeper::OpenidConnect.configure do
4
- issuer 'issuer string'
4
+ issuer do |resource_owner, application|
5
+ 'issuer string'
6
+ end
5
7
 
6
8
  signing_key <<~KEY
7
9
  -----BEGIN RSA PRIVATE KEY-----
@@ -28,6 +30,18 @@ Doorkeeper::OpenidConnect.configure do
28
30
  # redirect_to new_user_session_url
29
31
  end
30
32
 
33
+ # Depending on your configuration, a DoubleRenderError could be raised
34
+ # if render/redirect_to is called at some point before this callback is executed.
35
+ # To avoid the DoubleRenderError, you could add these two lines at the beginning
36
+ # of this callback: (Reference: https://github.com/rails/rails/issues/25106)
37
+ # self.response_body = nil
38
+ # @_response_body = nil
39
+ select_account_for_resource_owner do |resource_owner, return_to|
40
+ # Example implementation:
41
+ # store_location_for resource_owner, return_to
42
+ # redirect_to account_select_url
43
+ end
44
+
31
45
  subject do |resource_owner, application|
32
46
  # Example implementation:
33
47
  # resource_owner.id
@@ -1,7 +1,7 @@
1
1
  class CreateDoorkeeperOpenidConnectTables < ActiveRecord::Migration<%= migration_version %>
2
2
  def change
3
3
  create_table :oauth_openid_requests do |t|
4
- t.integer :access_grant_id, null: false
4
+ t.references :access_grant, null: false, index: true
5
5
  t.string :nonce, null: false
6
6
  end
7
7
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: doorkeeper-openid_connect
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.7.2
4
+ version: 1.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sam Dengler
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2020-05-20 00:00:00.000000000 Z
12
+ date: 2021-05-11 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: doorkeeper
@@ -17,20 +17,20 @@ dependencies:
17
17
  requirements:
18
18
  - - ">="
19
19
  - !ruby/object:Gem::Version
20
- version: '5.2'
20
+ version: '5.5'
21
21
  - - "<"
22
22
  - !ruby/object:Gem::Version
23
- version: '5.5'
23
+ version: '5.6'
24
24
  type: :runtime
25
25
  prerelease: false
26
26
  version_requirements: !ruby/object:Gem::Requirement
27
27
  requirements:
28
28
  - - ">="
29
29
  - !ruby/object:Gem::Version
30
- version: '5.2'
30
+ version: '5.5'
31
31
  - - "<"
32
32
  - !ruby/object:Gem::Version
33
- version: '5.5'
33
+ version: '5.6'
34
34
  - !ruby/object:Gem::Dependency
35
35
  name: json-jwt
36
36
  requirement: !ruby/object:Gem::Requirement
@@ -157,7 +157,6 @@ files:
157
157
  - lib/doorkeeper/openid_connect/rails/routes.rb
158
158
  - lib/doorkeeper/openid_connect/rails/routes/mapper.rb
159
159
  - lib/doorkeeper/openid_connect/rails/routes/mapping.rb
160
- - lib/doorkeeper/openid_connect/response_types_config.rb
161
160
  - lib/doorkeeper/openid_connect/user_info.rb
162
161
  - lib/doorkeeper/openid_connect/version.rb
163
162
  - lib/doorkeeper/request/id_token.rb
@@ -178,14 +177,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
178
177
  requirements:
179
178
  - - ">="
180
179
  - !ruby/object:Gem::Version
181
- version: '2.4'
180
+ version: '2.5'
182
181
  required_rubygems_version: !ruby/object:Gem::Requirement
183
182
  requirements:
184
183
  - - ">="
185
184
  - !ruby/object:Gem::Version
186
185
  version: '0'
187
186
  requirements: []
188
- rubygems_version: 3.0.2
187
+ rubygems_version: 3.1.4
189
188
  signing_key:
190
189
  specification_version: 4
191
190
  summary: OpenID Connect extension for Doorkeeper.
@@ -1,19 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Doorkeeper
4
- module OpenidConnect
5
- module ResponseTypeConfig
6
- private def calculate_authorization_response_types
7
- types = super
8
- if grant_flows.include? 'implicit_oidc'
9
- types << 'token'
10
- types << 'id_token'
11
- types << 'id_token token'
12
- end
13
- types
14
- end
15
- end
16
- end
17
-
18
- Config.prepend OpenidConnect::ResponseTypeConfig
19
- end