doorkeeper 5.2.2 → 5.5.4
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of doorkeeper might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/CHANGELOG.md +198 -3
- data/README.md +28 -20
- data/app/controllers/doorkeeper/application_controller.rb +3 -2
- data/app/controllers/doorkeeper/application_metal_controller.rb +2 -2
- data/app/controllers/doorkeeper/applications_controller.rb +7 -8
- data/app/controllers/doorkeeper/authorizations_controller.rb +48 -18
- data/app/controllers/doorkeeper/authorized_applications_controller.rb +6 -6
- data/app/controllers/doorkeeper/token_info_controller.rb +12 -2
- data/app/controllers/doorkeeper/tokens_controller.rb +70 -25
- data/app/helpers/doorkeeper/dashboard_helper.rb +1 -1
- data/app/views/doorkeeper/applications/_form.html.erb +1 -1
- data/app/views/doorkeeper/applications/show.html.erb +35 -14
- data/app/views/doorkeeper/authorizations/form_post.html.erb +15 -0
- data/app/views/doorkeeper/authorizations/new.html.erb +2 -0
- data/config/locales/en.yml +9 -2
- data/lib/doorkeeper/config/abstract_builder.rb +28 -0
- data/lib/doorkeeper/config/option.rb +26 -14
- data/lib/doorkeeper/config/validations.rb +53 -0
- data/lib/doorkeeper/config.rb +214 -122
- data/lib/doorkeeper/engine.rb +1 -1
- data/lib/doorkeeper/grant_flow/fallback_flow.rb +15 -0
- data/lib/doorkeeper/grant_flow/flow.rb +44 -0
- data/lib/doorkeeper/grant_flow/registry.rb +50 -0
- data/lib/doorkeeper/grant_flow.rb +45 -0
- data/lib/doorkeeper/grape/helpers.rb +2 -2
- data/lib/doorkeeper/helpers/controller.rb +18 -12
- data/lib/doorkeeper/models/access_grant_mixin.rb +23 -19
- data/lib/doorkeeper/models/access_token_mixin.rb +157 -55
- data/lib/doorkeeper/models/application_mixin.rb +8 -7
- data/lib/doorkeeper/models/concerns/expirable.rb +1 -1
- data/lib/doorkeeper/models/concerns/ownership.rb +1 -1
- data/lib/doorkeeper/models/concerns/resource_ownerable.rb +47 -0
- data/lib/doorkeeper/models/concerns/reusable.rb +1 -1
- data/lib/doorkeeper/models/concerns/revocable.rb +1 -28
- data/lib/doorkeeper/models/concerns/scopes.rb +5 -1
- data/lib/doorkeeper/models/concerns/secret_storable.rb +1 -3
- data/lib/doorkeeper/oauth/authorization/code.rb +22 -9
- data/lib/doorkeeper/oauth/authorization/context.rb +5 -5
- data/lib/doorkeeper/oauth/authorization/token.rb +23 -18
- data/lib/doorkeeper/oauth/authorization/uri_builder.rb +4 -4
- data/lib/doorkeeper/oauth/authorization_code_request.rb +30 -20
- data/lib/doorkeeper/oauth/base_request.rb +19 -23
- data/lib/doorkeeper/oauth/client/credentials.rb +2 -4
- data/lib/doorkeeper/oauth/client.rb +8 -9
- data/lib/doorkeeper/oauth/client_credentials/creator.rb +38 -12
- data/lib/doorkeeper/oauth/client_credentials/issuer.rb +10 -8
- data/lib/doorkeeper/oauth/client_credentials/{validation.rb → validator.rb} +7 -5
- data/lib/doorkeeper/oauth/client_credentials_request.rb +8 -7
- data/lib/doorkeeper/oauth/code_request.rb +4 -4
- data/lib/doorkeeper/oauth/code_response.rb +24 -14
- data/lib/doorkeeper/oauth/error.rb +1 -1
- data/lib/doorkeeper/oauth/error_response.rb +10 -11
- data/lib/doorkeeper/oauth/forbidden_token_response.rb +2 -1
- data/lib/doorkeeper/oauth/helpers/scope_checker.rb +8 -12
- data/lib/doorkeeper/oauth/helpers/unique_token.rb +10 -7
- data/lib/doorkeeper/oauth/helpers/uri_checker.rb +1 -19
- data/lib/doorkeeper/oauth/hooks/context.rb +21 -0
- data/lib/doorkeeper/oauth/invalid_request_response.rb +3 -3
- data/lib/doorkeeper/oauth/invalid_token_response.rb +7 -4
- data/lib/doorkeeper/oauth/password_access_token_request.rb +28 -10
- data/lib/doorkeeper/oauth/pre_authorization.rb +73 -37
- data/lib/doorkeeper/oauth/refresh_token_request.rb +35 -26
- data/lib/doorkeeper/oauth/token.rb +6 -7
- data/lib/doorkeeper/oauth/token_introspection.rb +12 -16
- data/lib/doorkeeper/oauth/token_request.rb +3 -3
- data/lib/doorkeeper/oauth/token_response.rb +1 -1
- data/lib/doorkeeper/orm/active_record/access_grant.rb +4 -43
- data/lib/doorkeeper/orm/active_record/access_token.rb +4 -35
- data/lib/doorkeeper/orm/active_record/application.rb +5 -95
- data/lib/doorkeeper/orm/active_record/mixins/access_grant.rb +69 -0
- data/lib/doorkeeper/orm/active_record/mixins/access_token.rb +60 -0
- data/lib/doorkeeper/orm/active_record/mixins/application.rb +199 -0
- data/lib/doorkeeper/orm/active_record/redirect_uri_validator.rb +8 -3
- data/lib/doorkeeper/orm/active_record.rb +5 -7
- data/lib/doorkeeper/rails/helpers.rb +4 -4
- data/lib/doorkeeper/rails/routes/abstract_router.rb +35 -0
- data/lib/doorkeeper/rails/routes/mapper.rb +2 -2
- data/lib/doorkeeper/rails/routes/registry.rb +45 -0
- data/lib/doorkeeper/rails/routes.rb +17 -25
- data/lib/doorkeeper/rake/db.rake +6 -6
- data/lib/doorkeeper/rake/setup.rake +5 -0
- data/lib/doorkeeper/request/authorization_code.rb +3 -3
- data/lib/doorkeeper/request/client_credentials.rb +2 -2
- data/lib/doorkeeper/request/password.rb +3 -2
- data/lib/doorkeeper/request/refresh_token.rb +5 -4
- data/lib/doorkeeper/request/strategy.rb +2 -2
- data/lib/doorkeeper/request.rb +49 -12
- data/lib/doorkeeper/server.rb +5 -5
- data/lib/doorkeeper/stale_records_cleaner.rb +4 -4
- data/lib/doorkeeper/version.rb +2 -6
- data/lib/doorkeeper.rb +112 -81
- data/lib/generators/doorkeeper/application_owner_generator.rb +1 -1
- data/lib/generators/doorkeeper/confidential_applications_generator.rb +2 -2
- data/lib/generators/doorkeeper/enable_polymorphic_resource_owner_generator.rb +39 -0
- data/lib/generators/doorkeeper/migration_generator.rb +1 -1
- data/lib/generators/doorkeeper/pkce_generator.rb +1 -1
- data/lib/generators/doorkeeper/previous_refresh_token_generator.rb +2 -2
- data/lib/generators/doorkeeper/templates/add_owner_to_application_migration.rb.erb +3 -1
- data/lib/generators/doorkeeper/templates/add_previous_refresh_token_to_access_tokens.rb.erb +2 -0
- data/lib/generators/doorkeeper/templates/enable_pkce_migration.rb.erb +2 -0
- data/lib/generators/doorkeeper/templates/enable_polymorphic_resource_owner_migration.rb.erb +17 -0
- data/lib/generators/doorkeeper/templates/initializer.rb +99 -14
- data/lib/generators/doorkeeper/templates/migration.rb.erb +14 -5
- metadata +37 -306
- data/Appraisals +0 -40
- data/CODE_OF_CONDUCT.md +0 -46
- data/CONTRIBUTING.md +0 -49
- data/Dangerfile +0 -67
- data/Dockerfile +0 -29
- data/Gemfile +0 -25
- data/NEWS.md +0 -1
- data/RELEASING.md +0 -11
- data/Rakefile +0 -28
- data/SECURITY.md +0 -15
- data/UPGRADE.md +0 -2
- data/bin/console +0 -16
- data/doorkeeper.gemspec +0 -42
- data/gemfiles/rails_5_0.gemfile +0 -18
- data/gemfiles/rails_5_1.gemfile +0 -18
- data/gemfiles/rails_5_2.gemfile +0 -18
- data/gemfiles/rails_6_0.gemfile +0 -18
- data/gemfiles/rails_master.gemfile +0 -18
- data/spec/controllers/application_metal_controller_spec.rb +0 -64
- data/spec/controllers/applications_controller_spec.rb +0 -273
- data/spec/controllers/authorizations_controller_spec.rb +0 -608
- data/spec/controllers/protected_resources_controller_spec.rb +0 -353
- data/spec/controllers/token_info_controller_spec.rb +0 -50
- data/spec/controllers/tokens_controller_spec.rb +0 -498
- data/spec/dummy/Rakefile +0 -9
- data/spec/dummy/app/assets/config/manifest.js +0 -2
- data/spec/dummy/app/controllers/application_controller.rb +0 -5
- data/spec/dummy/app/controllers/custom_authorizations_controller.rb +0 -9
- data/spec/dummy/app/controllers/full_protected_resources_controller.rb +0 -14
- data/spec/dummy/app/controllers/home_controller.rb +0 -18
- data/spec/dummy/app/controllers/metal_controller.rb +0 -13
- data/spec/dummy/app/controllers/semi_protected_resources_controller.rb +0 -13
- data/spec/dummy/app/helpers/application_helper.rb +0 -7
- data/spec/dummy/app/models/user.rb +0 -7
- data/spec/dummy/app/views/home/index.html.erb +0 -0
- data/spec/dummy/app/views/layouts/application.html.erb +0 -14
- data/spec/dummy/config/application.rb +0 -49
- data/spec/dummy/config/boot.rb +0 -7
- data/spec/dummy/config/database.yml +0 -15
- data/spec/dummy/config/environment.rb +0 -5
- data/spec/dummy/config/environments/development.rb +0 -31
- data/spec/dummy/config/environments/production.rb +0 -64
- data/spec/dummy/config/environments/test.rb +0 -45
- data/spec/dummy/config/initializers/backtrace_silencers.rb +0 -9
- data/spec/dummy/config/initializers/doorkeeper.rb +0 -166
- data/spec/dummy/config/initializers/secret_token.rb +0 -10
- data/spec/dummy/config/initializers/session_store.rb +0 -10
- data/spec/dummy/config/initializers/wrap_parameters.rb +0 -16
- data/spec/dummy/config/locales/doorkeeper.en.yml +0 -5
- data/spec/dummy/config/routes.rb +0 -13
- data/spec/dummy/config.ru +0 -6
- data/spec/dummy/db/migrate/20111122132257_create_users.rb +0 -11
- data/spec/dummy/db/migrate/20120312140401_add_password_to_users.rb +0 -7
- data/spec/dummy/db/migrate/20151223192035_create_doorkeeper_tables.rb +0 -69
- data/spec/dummy/db/migrate/20151223200000_add_owner_to_application.rb +0 -9
- data/spec/dummy/db/migrate/20160320211015_add_previous_refresh_token_to_access_tokens.rb +0 -13
- data/spec/dummy/db/migrate/20170822064514_enable_pkce.rb +0 -8
- data/spec/dummy/db/migrate/20180210183654_add_confidential_to_applications.rb +0 -13
- data/spec/dummy/db/schema.rb +0 -68
- data/spec/dummy/public/404.html +0 -26
- data/spec/dummy/public/422.html +0 -26
- data/spec/dummy/public/500.html +0 -26
- data/spec/dummy/public/favicon.ico +0 -0
- data/spec/dummy/script/rails +0 -9
- data/spec/factories.rb +0 -30
- data/spec/generators/application_owner_generator_spec.rb +0 -28
- data/spec/generators/confidential_applications_generator_spec.rb +0 -29
- data/spec/generators/install_generator_spec.rb +0 -36
- data/spec/generators/migration_generator_spec.rb +0 -28
- data/spec/generators/pkce_generator_spec.rb +0 -28
- data/spec/generators/previous_refresh_token_generator_spec.rb +0 -44
- data/spec/generators/templates/routes.rb +0 -4
- data/spec/generators/views_generator_spec.rb +0 -29
- data/spec/grape/grape_integration_spec.rb +0 -137
- data/spec/helpers/doorkeeper/dashboard_helper_spec.rb +0 -26
- data/spec/lib/config_spec.rb +0 -739
- data/spec/lib/doorkeeper_spec.rb +0 -27
- data/spec/lib/models/expirable_spec.rb +0 -61
- data/spec/lib/models/reusable_spec.rb +0 -40
- data/spec/lib/models/revocable_spec.rb +0 -59
- data/spec/lib/models/scopes_spec.rb +0 -53
- data/spec/lib/models/secret_storable_spec.rb +0 -135
- data/spec/lib/oauth/authorization/uri_builder_spec.rb +0 -39
- data/spec/lib/oauth/authorization_code_request_spec.rb +0 -168
- data/spec/lib/oauth/base_request_spec.rb +0 -222
- data/spec/lib/oauth/base_response_spec.rb +0 -47
- data/spec/lib/oauth/client/credentials_spec.rb +0 -90
- data/spec/lib/oauth/client_credentials/creator_spec.rb +0 -97
- data/spec/lib/oauth/client_credentials/issuer_spec.rb +0 -112
- data/spec/lib/oauth/client_credentials/validation_spec.rb +0 -59
- data/spec/lib/oauth/client_credentials_integration_spec.rb +0 -29
- data/spec/lib/oauth/client_credentials_request_spec.rb +0 -109
- data/spec/lib/oauth/client_spec.rb +0 -38
- data/spec/lib/oauth/code_request_spec.rb +0 -46
- data/spec/lib/oauth/code_response_spec.rb +0 -36
- data/spec/lib/oauth/error_response_spec.rb +0 -66
- data/spec/lib/oauth/error_spec.rb +0 -23
- data/spec/lib/oauth/forbidden_token_response_spec.rb +0 -22
- data/spec/lib/oauth/helpers/scope_checker_spec.rb +0 -98
- data/spec/lib/oauth/helpers/unique_token_spec.rb +0 -21
- data/spec/lib/oauth/helpers/uri_checker_spec.rb +0 -262
- data/spec/lib/oauth/invalid_request_response_spec.rb +0 -75
- data/spec/lib/oauth/invalid_token_response_spec.rb +0 -55
- data/spec/lib/oauth/password_access_token_request_spec.rb +0 -192
- data/spec/lib/oauth/pre_authorization_spec.rb +0 -225
- data/spec/lib/oauth/refresh_token_request_spec.rb +0 -178
- data/spec/lib/oauth/scopes_spec.rb +0 -148
- data/spec/lib/oauth/token_request_spec.rb +0 -153
- data/spec/lib/oauth/token_response_spec.rb +0 -86
- data/spec/lib/oauth/token_spec.rb +0 -158
- data/spec/lib/request/strategy_spec.rb +0 -54
- data/spec/lib/secret_storing/base_spec.rb +0 -60
- data/spec/lib/secret_storing/bcrypt_spec.rb +0 -49
- data/spec/lib/secret_storing/plain_spec.rb +0 -44
- data/spec/lib/secret_storing/sha256_hash_spec.rb +0 -48
- data/spec/lib/server_spec.rb +0 -49
- data/spec/lib/stale_records_cleaner_spec.rb +0 -89
- data/spec/models/doorkeeper/access_grant_spec.rb +0 -163
- data/spec/models/doorkeeper/access_token_spec.rb +0 -622
- data/spec/models/doorkeeper/application_spec.rb +0 -377
- data/spec/requests/applications/applications_request_spec.rb +0 -259
- data/spec/requests/applications/authorized_applications_spec.rb +0 -32
- data/spec/requests/endpoints/authorization_spec.rb +0 -89
- data/spec/requests/endpoints/token_spec.rb +0 -75
- data/spec/requests/flows/authorization_code_errors_spec.rb +0 -79
- data/spec/requests/flows/authorization_code_spec.rb +0 -513
- data/spec/requests/flows/client_credentials_spec.rb +0 -166
- data/spec/requests/flows/implicit_grant_errors_spec.rb +0 -46
- data/spec/requests/flows/implicit_grant_spec.rb +0 -91
- data/spec/requests/flows/password_spec.rb +0 -296
- data/spec/requests/flows/refresh_token_spec.rb +0 -233
- data/spec/requests/flows/revoke_token_spec.rb +0 -151
- data/spec/requests/flows/skip_authorization_spec.rb +0 -66
- data/spec/requests/protected_resources/metal_spec.rb +0 -16
- data/spec/requests/protected_resources/private_api_spec.rb +0 -83
- data/spec/routing/custom_controller_routes_spec.rb +0 -133
- data/spec/routing/default_routes_spec.rb +0 -41
- data/spec/routing/scoped_routes_spec.rb +0 -47
- data/spec/spec_helper.rb +0 -57
- data/spec/spec_helper_integration.rb +0 -4
- data/spec/support/dependencies/factory_bot.rb +0 -4
- data/spec/support/doorkeeper_rspec.rb +0 -22
- data/spec/support/helpers/access_token_request_helper.rb +0 -13
- data/spec/support/helpers/authorization_request_helper.rb +0 -43
- data/spec/support/helpers/config_helper.rb +0 -11
- data/spec/support/helpers/model_helper.rb +0 -78
- data/spec/support/helpers/request_spec_helper.rb +0 -110
- data/spec/support/helpers/url_helper.rb +0 -62
- data/spec/support/http_method_shim.rb +0 -29
- data/spec/support/orm/active_record.rb +0 -5
- data/spec/support/shared/controllers_shared_context.rb +0 -123
- data/spec/support/shared/hashing_shared_context.rb +0 -36
- data/spec/support/shared/models_shared_examples.rb +0 -54
- data/spec/validators/redirect_uri_validator_spec.rb +0 -183
- data/spec/version/version_spec.rb +0 -17
@@ -29,6 +29,52 @@ Doorkeeper.configure do
|
|
29
29
|
# end
|
30
30
|
# end
|
31
31
|
|
32
|
+
# You can use your own model classes if you need to extend (or even override) default
|
33
|
+
# Doorkeeper models such as `Application`, `AccessToken` and `AccessGrant.
|
34
|
+
#
|
35
|
+
# Be default Doorkeeper ActiveRecord ORM uses it's own classes:
|
36
|
+
#
|
37
|
+
# access_token_class "Doorkeeper::AccessToken"
|
38
|
+
# access_grant_class "Doorkeeper::AccessGrant"
|
39
|
+
# application_class "Doorkeeper::Application"
|
40
|
+
#
|
41
|
+
# Don't forget to include Doorkeeper ORM mixins into your custom models:
|
42
|
+
#
|
43
|
+
# * ::Doorkeeper::Orm::ActiveRecord::Mixins::AccessToken - for access token
|
44
|
+
# * ::Doorkeeper::Orm::ActiveRecord::Mixins::AccessGrant - for access grant
|
45
|
+
# * ::Doorkeeper::Orm::ActiveRecord::Mixins::Application - for application (OAuth2 clients)
|
46
|
+
#
|
47
|
+
# For example:
|
48
|
+
#
|
49
|
+
# access_token_class "MyAccessToken"
|
50
|
+
#
|
51
|
+
# class MyAccessToken < ApplicationRecord
|
52
|
+
# include ::Doorkeeper::Orm::ActiveRecord::Mixins::AccessToken
|
53
|
+
#
|
54
|
+
# self.table_name = "hey_i_wanna_my_name"
|
55
|
+
#
|
56
|
+
# def destroy_me!
|
57
|
+
# destroy
|
58
|
+
# end
|
59
|
+
# end
|
60
|
+
|
61
|
+
# Enables polymorphic Resource Owner association for Access Tokens and Access Grants.
|
62
|
+
# By default this option is disabled.
|
63
|
+
#
|
64
|
+
# Make sure you properly setup you database and have all the required columns (run
|
65
|
+
# `bundle exec rails generate doorkeeper:enable_polymorphic_resource_owner` and execute Rails
|
66
|
+
# migrations).
|
67
|
+
#
|
68
|
+
# If this option enabled, Doorkeeper will store not only Resource Owner primary key
|
69
|
+
# value, but also it's type (class name). See "Polymorphic Associations" section of
|
70
|
+
# Rails guides: https://guides.rubyonrails.org/association_basics.html#polymorphic-associations
|
71
|
+
#
|
72
|
+
# [NOTE] If you apply this option on already existing project don't forget to manually
|
73
|
+
# update `resource_owner_type` column in the database and fix migration template as it will
|
74
|
+
# set NOT NULL constraint for Access Grants table.
|
75
|
+
#
|
76
|
+
# use_polymorphic_resource_owner
|
77
|
+
|
32
78
|
# If you are planning to use Doorkeeper in Rails 5 API-only application, then you might
|
33
79
|
# want to use API mode that will skip all the views management and change the way how
|
34
80
|
# Doorkeeper responds to a requests.
|
@@ -57,12 +103,13 @@ Doorkeeper.configure do
|
|
57
103
|
#
|
58
104
|
# `context` has the following properties available:
|
59
105
|
#
|
60
|
-
# `client` - the OAuth client application (see Doorkeeper::OAuth::Client)
|
61
|
-
# `grant_type` - the grant type of the request (see Doorkeeper::OAuth)
|
62
|
-
# `scopes` - the requested scopes (see Doorkeeper::OAuth::Scopes)
|
106
|
+
# * `client` - the OAuth client application (see Doorkeeper::OAuth::Client)
|
107
|
+
# * `grant_type` - the grant type of the request (see Doorkeeper::OAuth)
|
108
|
+
# * `scopes` - the requested scopes (see Doorkeeper::OAuth::Scopes)
|
109
|
+
# * `resource_owner` - authorized resource owner instance (if present)
|
63
110
|
#
|
64
111
|
# custom_access_token_expires_in do |context|
|
65
|
-
# context.client.
|
112
|
+
# context.client.additional_settings.implicit_oauth_expiration
|
66
113
|
# end
|
67
114
|
|
68
115
|
# Use a custom class for generating the access token.
|
@@ -73,7 +120,7 @@ Doorkeeper.configure do
|
|
73
120
|
# The controller +Doorkeeper::ApplicationController+ inherits from.
|
74
121
|
# Defaults to +ActionController::Base+ unless +api_only+ is set, which changes the default to
|
75
122
|
# +ActionController::API+. The return value of this option must be a stringified class name.
|
76
|
-
# See https://doorkeeper.gitbook.io/guides/configuration/other-configurations#custom-
|
123
|
+
# See https://doorkeeper.gitbook.io/guides/configuration/other-configurations#custom-controllers
|
77
124
|
#
|
78
125
|
# base_controller 'ApplicationController'
|
79
126
|
|
@@ -88,6 +135,14 @@ Doorkeeper.configure do
|
|
88
135
|
#
|
89
136
|
# reuse_access_token
|
90
137
|
|
138
|
+
# In case you enabled `reuse_access_token` option Doorkeeper will try to find matching
|
139
|
+
# token using `matching_token_for` Access Token API that searches for valid records
|
140
|
+
# in batches in order not to pollute the memory with all the database records. By default
|
141
|
+
# Doorkeeper uses batch size of 10 000 records. You can increase or decrease this value
|
142
|
+
# depending on your needs and server capabilities.
|
143
|
+
#
|
144
|
+
# token_lookup_batch_size 10_000
|
145
|
+
|
91
146
|
# Set a limit for token_reuse if using reuse_access_token option
|
92
147
|
#
|
93
148
|
# This option limits token_reusability to some extent.
|
@@ -98,13 +153,22 @@ Doorkeeper.configure do
|
|
98
153
|
#
|
99
154
|
# token_reuse_limit 100
|
100
155
|
|
156
|
+
# Only allow one valid access token obtained via client credentials
|
157
|
+
# per client. If a new access token is obtained before the old one
|
158
|
+
# expired, the old one gets revoked (disabled by default)
|
159
|
+
#
|
160
|
+
# When enabling this option, make sure that you do not expect multiple processes
|
161
|
+
# using the same credentials at the same time (e.g. web servers spanning
|
162
|
+
# multiple machines and/or processes).
|
163
|
+
#
|
164
|
+
# revoke_previous_client_credentials_token
|
165
|
+
|
101
166
|
# Hash access and refresh tokens before persisting them.
|
102
167
|
# This will disable the possibility to use +reuse_access_token+
|
103
168
|
# since plain values can no longer be retrieved.
|
104
169
|
#
|
105
170
|
# Note: If you are already a user of doorkeeper and have existing tokens
|
106
|
-
# in your installation, they will be invalid without
|
107
|
-
# setting `fallback_to_plain_secrets` below.
|
171
|
+
# in your installation, they will be invalid without adding 'fallback: :plain'.
|
108
172
|
#
|
109
173
|
# hash_token_secrets
|
110
174
|
# By default, token secrets will be hashed using the
|
@@ -138,7 +202,9 @@ Doorkeeper.configure do
|
|
138
202
|
# This will ensure that old access tokens and secrets
|
139
203
|
# will remain valid even if the hashing above is enabled.
|
140
204
|
#
|
141
|
-
#
|
205
|
+
# This can be done by adding 'fallback: plain', e.g. :
|
206
|
+
#
|
207
|
+
# hash_application_secrets using: '::Doorkeeper::SecretStoring::BCrypt', fallback: :plain
|
142
208
|
|
143
209
|
# Issue access tokens with refresh token (disabled by default), you may also
|
144
210
|
# pass a block which accepts `context` to customize when to give a refresh
|
@@ -210,7 +276,7 @@ Doorkeeper.configure do
|
|
210
276
|
# force_ssl_in_redirect_uri { |uri| uri.host != 'localhost' }
|
211
277
|
|
212
278
|
# Specify what redirect URI's you want to block during Application creation.
|
213
|
-
# Any redirect URI is
|
279
|
+
# Any redirect URI is allowed by default.
|
214
280
|
#
|
215
281
|
# You can use this option in order to forbid URI's with 'javascript' scheme
|
216
282
|
# for example.
|
@@ -277,8 +343,8 @@ Doorkeeper.configure do
|
|
277
343
|
#
|
278
344
|
# implicit and password grant flows have risks that you should understand
|
279
345
|
# before enabling:
|
280
|
-
#
|
281
|
-
#
|
346
|
+
# https://datatracker.ietf.org/doc/html/rfc6819#section-4.4.2
|
347
|
+
# https://datatracker.ietf.org/doc/html/rfc6819#section-4.4.3
|
282
348
|
#
|
283
349
|
# grant_flows %w[authorization_code client_credentials]
|
284
350
|
|
@@ -313,6 +379,17 @@ Doorkeeper.configure do
|
|
313
379
|
# client.grant_flows.include?(grant_flow)
|
314
380
|
# end
|
315
381
|
|
382
|
+
# If you need arbitrary Resource Owner-Client authorization you can enable this option
|
383
|
+
# and implement the check your need. Config option must respond to #call and return
|
384
|
+
# true in case resource owner authorized for the specific application or false in other
|
385
|
+
# cases.
|
386
|
+
#
|
387
|
+
# Be default all Resource Owners are authorized to any Client (application).
|
388
|
+
#
|
389
|
+
# authorize_resource_owner_for_client do |client, resource_owner|
|
390
|
+
# resource_owner.admin? || client.owners_allowlist.include?(resource_owner)
|
391
|
+
# end
|
392
|
+
|
316
393
|
# Hook into the strategies' request & response life-cycle in case your
|
317
394
|
# application needs advanced customization or logging:
|
318
395
|
#
|
@@ -325,17 +402,25 @@ Doorkeeper.configure do
|
|
325
402
|
# end
|
326
403
|
|
327
404
|
# Hook into Authorization flow in order to implement Single Sign Out
|
328
|
-
# or add any other functionality.
|
405
|
+
# or add any other functionality. Inside the block you have an access
|
406
|
+
# to `controller` (authorizations controller instance) and `context`
|
407
|
+
# (Doorkeeper::OAuth::Hooks::Context instance) which provides pre auth
|
408
|
+
# or auth objects with issued token based on hook type (before or after).
|
329
409
|
#
|
330
|
-
# before_successful_authorization do |controller|
|
410
|
+
# before_successful_authorization do |controller, context|
|
331
411
|
# Rails.logger.info(controller.request.params.inspect)
|
412
|
+
#
|
413
|
+
# Rails.logger.info(context.pre_auth.inspect)
|
332
414
|
# end
|
333
415
|
#
|
334
|
-
# after_successful_authorization do |controller|
|
416
|
+
# after_successful_authorization do |controller, context|
|
335
417
|
# controller.session[:logout_urls] <<
|
336
418
|
# Doorkeeper::Application
|
337
419
|
# .find_by(controller.request.params.slice(:redirect_uri))
|
338
420
|
# .logout_uri
|
421
|
+
#
|
422
|
+
# Rails.logger.info(context.auth.inspect)
|
423
|
+
# Rails.logger.info(context.issued_token)
|
339
424
|
# end
|
340
425
|
|
341
426
|
# Under some circumstances you might want to have applications auto-approved,
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
class CreateDoorkeeperTables < ActiveRecord::Migration<%= migration_version %>
|
2
4
|
def change
|
3
5
|
create_table :oauth_applications do |t|
|
@@ -55,12 +57,19 @@ class CreateDoorkeeperTables < ActiveRecord::Migration<%= migration_version %>
|
|
55
57
|
t.datetime :created_at, null: false
|
56
58
|
t.string :scopes
|
57
59
|
|
58
|
-
#
|
60
|
+
# The authorization server MAY issue a new refresh token, in which case
|
61
|
+
# *the client MUST discard the old refresh token* and replace it with the
|
62
|
+
# new refresh token. The authorization server MAY revoke the old
|
63
|
+
# refresh token after issuing a new refresh token to the client.
|
64
|
+
# @see https://datatracker.ietf.org/doc/html/rfc6749#section-6
|
65
|
+
#
|
66
|
+
# Doorkeeper implementation: if there is a `previous_refresh_token` column,
|
59
67
|
# refresh tokens will be revoked after a related access token is used.
|
60
|
-
# If there is no previous_refresh_token column,
|
61
|
-
#
|
62
|
-
#
|
63
|
-
# instantly
|
68
|
+
# If there is no `previous_refresh_token` column, previous tokens are
|
69
|
+
# revoked as soon as a new access token is created.
|
70
|
+
#
|
71
|
+
# Comment out this line if you want refresh tokens to be instantly
|
72
|
+
# revoked after use.
|
64
73
|
t.string :previous_refresh_token, null: false, default: ""
|
65
74
|
end
|
66
75
|
|