https://github.com/doorkeeper-gem/doorkeeper
Doorkeeper is an OAuth 2 provider for Ruby on Rails / Grape.
https://github.com/doorkeeper-gem/doorkeeper
Keywords
authentication authorization doorkeeper grape identity oauth oauth2 oauth2-provider oauth2-server ruby-on-rails
Keywords from Contributors
activerecord activejob mvc rubygems ruby-gem crash-reporting rack background-jobs sidekiq sinatra
Last synced: about 14 hours ago
JSON representation
Repository metadata
Doorkeeper is an OAuth 2 provider for Ruby on Rails / Grape.
- Host: GitHub
- URL: https://github.com/doorkeeper-gem/doorkeeper
- Owner: doorkeeper-gem
- License: mit
- Created: 2011-11-18T13:02:01.000Z (almost 15 years ago)
- Default Branch: main
- Last Pushed: 2026-09-29T12:36:30.000Z (2 days ago)
- Last Synced: 2026-09-30T09:18:57.019Z (1 day ago)
- Topics: authentication, authorization, doorkeeper, grape, identity, oauth, oauth2, oauth2-provider, oauth2-server, ruby-on-rails
- Language: Ruby
- Homepage: https://doorkeeper.gitbook.io/guides/
- Size: 5.41 MB
- Stars: 5,523
- Watchers: 99
- Forks: 1,077
- Open Issues: 20
- Releases: 82
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: MIT-LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
- Security: SECURITY.md
- Agents: AGENTS.md
README.md
Doorkeeper — awesome OAuth 2 provider for your Rails / Grape app.
Doorkeeper is a gem (Rails engine) that makes it easy to introduce OAuth 2 provider
functionality to your Ruby on Rails or Grape application.
Supported features:
- The OAuth 2.0 Authorization Framework
- OAuth 2.0 Token Revocation
- OAuth 2.0 Token Introspection
- OAuth 2.0 Threat Model and Security Considerations
- OAuth 2.0 for Native Apps
- Proof Key for Code Exchange by OAuth Public Clients
- OAuth 2.0 Authorization Server Issuer Identification — opt-in by setting
issuer; adds theissparameter to authorization redirects returned to the client - Resource Indicators for OAuth 2.0
Table of Contents
- Documentation
- Installation
- ORMs
- Extensions
- Database maintenance
- Resource Indicators
- Refresh Token Scopes
- Custom Grant Flows
- Custom Client Authentication Methods
- Example Applications
- Sponsors
- Development
- Contributing
- Contributors
- License
Documentation
This documentation is valid for main branch. Please check the documentation for the version of doorkeeper you are using in:
https://github.com/doorkeeper-gem/doorkeeper/releases.
Additionally, other resources can be found on:
- Guides with how-to get started and configuration documentation
- See the Wiki for articles on how to integrate with other solutions
- Screencast from railscasts.com: #353
OAuth with
Doorkeeper - See upgrade guides
- For general questions, please post on Stack Overflow
- See SECURITY.md for this project's security disclose
policy
Installation
Installation depends on the framework you're using. The first step is to add the following to your Gemfile:
gem 'doorkeeper'
And run bundle install. After this, check out the guide related to the framework you're using.
Ruby on Rails
Doorkeeper currently supports Ruby on Rails >= 5.0. See the guide here.
Grape
Guide for integration with Grape framework can be found here.
ORMs
Doorkeeper supports Active Record by default, but can be configured to work with the following ORMs:
| ORM | Support via |
|---|---|
| Active Record | by default |
| MongoDB | doorkeeper-gem/doorkeeper-mongodb |
| Sequel | nbulaj/doorkeeper-sequel |
| Couchbase | acaprojects/doorkeeper-couchbase |
| RethinkDB | aca-labs/doorkeeper-rethinkdb |
Extensions
Extensions that are not included by default and can be installed separately.
| Link | |
|---|---|
| OpenID Connect extension | doorkeeper-gem/doorkeeper-openid_connect |
| JWT Token support | doorkeeper-gem/doorkeeper-jwt |
| Assertion grant extension | doorkeeper-gem/doorkeeper-grants_assertion |
| I18n translations | doorkeeper-gem/doorkeeper-i18n |
| CIBA - Client Initiated Backchannel Authentication Flow extension | doorkeeper-ciba |
| Device Authorization Grant | doorkeeper-device_authorization_grant |
Database maintenance
Doorkeeper does not automatically remove expired or revoked tokens and grants. The oauth_access_tokens and oauth_access_grants tables grow indefinitely and can reach millions of rows if left unmanaged.
Prune them periodically with the bundled rake task:
bundle exec rake doorkeeper:db:cleanup
This deletes expired and revoked access tokens and grants. See the Rake tasks guide for details.
Resource Indicators
Doorkeeper supports Resource Indicators for OAuth 2.0 (RFC 8707), allowing clients to signal which protected resource(s) they intend to access. Tokens are then audience-restricted to those resources.
Setup
- Run the generator to add the required
resourcecolumn:
rails generate doorkeeper:resource_indicators
rails db:migrate
- Configure a validator in your initializer:
# config/initializers/doorkeeper.rb
Doorkeeper.configure do
resource_indicator_validator ->(resource_indicators, client) {
allowed = %w[https://api.example.com/ https://calendar.example.com/]
resource_indicators.all? { |r| allowed.include?(r) }
}
end
The callable receives an array of resource URIs and the OAuth client. Return true to accept or false to reject with invalid_target.
Behavior
- Resource URIs must be absolute and must not contain a fragment component.
- Resource indicators are stored on grants and tokens.
- Token and refresh requests enforce subset restrictions against the original grant.
- Token introspection responses include
audwhen resource indicators are present. - Grants issued with resource indicators retain their audience restriction even if the validator is later removed from configuration.
Multiple resources
RFC 8707 uses repeated query parameters (?resource=…&resource=…) for multiple values, but Rack collapses repeated keys to the last value. Clients must use the Rails bracket syntax for multiple resource indicators:
?resource[]=https://api.example.com/&resource[]=https://calendar.example.com/
A single resource=… works as-is.
Refresh Token Scopes
A client may narrow the access token it gets back from the refresh token grant by sending a scope parameter. Per RFC 6749 §6 the refresh token itself keeps the scope originally granted by the resource owner: a later refresh that omits scope returns to the granted scope, and one that asks for the granted scope again is accepted.
Doorkeeper tracks the granted scope in the refresh_token_scopes column of oauth_access_tokens. New installs get it from the install migration; existing installs add it with:
rails generate doorkeeper:refresh_token_scopes
rails db:migrate
With the column in place, token introspection of a refresh token reports the granted scope rather than the scope of the access token it was issued with, and reuse_access_token does not hand a grant of a narrower scope an existing token whose refresh token was granted a wider one.
Without the column, a narrowed refresh narrows the refresh token as well, so the chain can never return to the granted scope (the behavior of Doorkeeper before the column existed), and a refresh_token_scopes assigned to an access token is ignored. Rows created before the migration keep that behavior until they are rotated, and so do the ORM extensions (Sequel, MongoDB) until they add the field.
Custom Grant Flows
Besides the built-in OAuth 2 flows, Doorkeeper can recognize and process any custom grant type through its grant flow registry — including grant types whose names are URNs or URIs, such as the SAML 2.0 bearer assertion grant defined by RFC 7522.
A grant flow bundles a matcher for the grant_type parameter with a strategy class that processes the token request. Register it before Doorkeeper.configure and enable it by adding its registered name to grant_flows:
# config/initializers/doorkeeper.rb
Doorkeeper::GrantFlow.register(
:saml2_bearer,
grant_type_matches: "urn:ietf:params:oauth:grant-type:saml2-bearer",
grant_type_strategy: SamlBearer::Strategy,
)
Doorkeeper.configure do
grant_flows %w[authorization_code saml2_bearer]
# ...
end
Note that grant_flows lists the registered flow name (saml2_bearer), while grant_type_matches — a String or a Regexp — is what the request's grant_type parameter is matched against.
The strategy class receives the authorization server as server and builds the request object handling the grant:
module SamlBearer
class Strategy < Doorkeeper::Request::Strategy
delegate :client, :parameters, to: :server
def request
@request ||= TokenRequest.new(Doorkeeper.config, client, parameters)
end
end
end
The request object validates the grant and issues the token. Subclassing Doorkeeper::OAuth::BaseRequest provides the response handling, scope calculation and token creation, so only the grant-specific parts remain (per RFC 7522 §2.1 the assertion parameter carries a single SAML assertion, base64url-encoded without padding):
module SamlBearer
class TokenRequest < Doorkeeper::OAuth::BaseRequest
validate :client, error: Doorkeeper::Errors::InvalidClient
validate :client_supports_grant_flow, error: Doorkeeper::Errors::UnauthorizedClient
validate :assertion, error: Doorkeeper::Errors::InvalidGrant
validate :scopes, error: Doorkeeper::Errors::InvalidScope
attr_reader :client, :parameters, :access_token
def initialize(server, client, parameters = {})
@server = server
@client = client
@parameters = parameters
@original_scopes = parameters[:scope]
@grant_type = "urn:ietf:params:oauth:grant-type:saml2-bearer"
end
private
def before_successful_response
find_or_create_access_token(client, resource_owner, scopes, {}, server)
super
end
def assertion
# Decode and verify the SAML assertion — signature, audience, validity
# window, etc. — e.g. with the ruby-saml gem. Skipping verification
# turns the endpoint into a token vending machine for anyone.
@assertion ||= decode_and_verify_saml(parameters[:assertion])
end
def resource_owner
# Map the assertion's subject to a resource owner.
@resource_owner ||= User.find_by(email: assertion.name_id)
end
def validate_client
client.present?
end
def validate_client_supports_grant_flow
Doorkeeper.config.allow_grant_flow_for_client?(grant_type, client&.application)
end
def validate_assertion
assertion.present? && resource_owner.present?
end
def validate_scopes
return true if scopes.blank?
Doorkeeper::OAuth::Helpers::ScopeChecker.valid?(
scope_str: scopes.to_s,
server_scopes: server.scopes,
app_scopes: client&.scopes,
grant_type: grant_type,
)
end
end
end
The client_supports_grant_flow validation keeps the custom grant subject to the allow_grant_flow_for_client configuration option (per-client grant restrictions), just like the built-in flows.
Flows can also handle custom response_type values on the authorization endpoint via the response_type_matches / response_type_strategy options — see the built-in registrations in lib/doorkeeper/grant_flow.rb for reference. An extension can also group several flows under one configuration name with Doorkeeper::GrantFlow.register_alias (e.g. the OpenID Connect extension registers implicit_oidc to expand to multiple response types).
Custom Client Authentication Methods
Doorkeeper authenticates clients (RFC 6749 §2.3) through a registry of named methods. client_secret_basic, client_secret_post and none are built in, and an application or extension can register additional ones — for instance to keep accepting credentials that a partner integration sends in its own headers.
A method is any object that responds to matches_request? and authenticate. Register it before Doorkeeper.configure and enable it by listing its registered name in client_authentication:
# config/initializers/doorkeeper.rb
Doorkeeper::ClientAuthentication.register(
:partner_headers,
PartnerHeaders::Authentication,
)
Doorkeeper.configure do
client_authentication %i[client_secret_basic client_secret_post partner_headers none]
# ...
end
The order of client_authentication is the order the methods are tried in: the first one whose matches_request? returns true handles the request.
matches_request? decides whether the request carries this method's credentials, and authenticate extracts them into a Doorkeeper::ClientAuthentication::Credentials pair (or nil):
module PartnerHeaders
class Authentication
def self.matches_request?(request)
request.get_header("HTTP_X_CLIENT_ID").present? &&
request.get_header("HTTP_X_CLIENT_SECRET").present?
end
def self.authenticate(request)
Doorkeeper::ClientAuthentication::Credentials.new(
request.get_header("HTTP_X_CLIENT_ID"),
request.get_header("HTTP_X_CLIENT_SECRET"),
)
end
end
end
Two things are worth keeping in mind when writing one.
Keep matches_request? as narrow as possible. RFC 6749 §2.3 forbids a client from using more than one authentication method in a single request, and Doorkeeper enforces that across the whole registry rather than only the enabled methods. A method that matches too broadly therefore collides with a built-in one and the request is answered with invalid_request.
The returned credentials are resolved with by_uid_and_secret. A blank secret resolves only a public (non-confidential) client — that is what the built-in none method relies on — while a confidential client is resolved only when the secret matches the registered one. A method that establishes the client's identity by some other proof, such as a client certificate or a signed assertion, therefore still has to produce the registered secret for a confidential client.
Enabled methods are advertised in the authorization server metadata, so a registered method appears in token_endpoint_auth_methods_supported at /.well-known/oauth-authorization-server once client_authentication lists it.
Example Applications
These applications show how Doorkeeper works and how to integrate with it. Start with the oAuth2 server and use the clients to connect with the server.
| Application | Link |
|---|---|
| OAuth2 Server with Doorkeeper | doorkeeper-gem/doorkeeper-provider-app |
| Sinatra Client connected to Provider App | doorkeeper-gem/doorkeeper-sinatra-client |
| Devise + Omniauth Client | doorkeeper-gem/doorkeeper-devise-client |
You may want to create a client application to
test the integration. Check out these client
examples
in our wiki or follow this tutorial
here.
Sponsors
Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [Become a sponsor]
Codecademy supports open source as part of its mission to democratize tech. Come help us build the education the world deserves: https://codecademy.com/about/careers
If you prefer not to deal with the gory details of OAuth 2, need dedicated customer support & consulting, try the cloud-based SaaS version: https://oauth.io
Wealthsimple is a financial company on a mission to help everyone achieve financial freedom by providing products and advice that are accessible and affordable. Using smart technology, Wealthsimple takes financial services that are often confusing, opaque and expensive and makes them simple, transparent, and low-cost. See what Investing on Autopilot is all about: https://www.wealthsimple.com
Development
To run the local engine server:
bundle install
bundle exec rake doorkeeper:server
By default, it uses the latest Rails version with ActiveRecord. To run the
tests with a specific Rails version:
BUNDLE_GEMFILE=gemfiles/rails_6_0.gemfile bundle exec rake
You can also experiment with the changes using bin/console. It uses in-memory SQLite database and default
Doorkeeper config, but you can reestablish connection or reconfigure the gem if you need.
Contributing
Want to contribute and don't know where to start? Check out features we're
missing,
create example
apps,
integrate the gem with your app and let us know!
Also, check out our contributing guidelines page.
Contributors
Thanks to all our awesome
contributors!
License
MIT License. Created in Applicake. Maintained by the community.
Owner metadata
- Name: doorkeeper gem
- Login: doorkeeper-gem
- Email:
- Kind: organization
- Description: Doorkeeper is an OAuth 2 provider gem for Rails and Ruby frameworks
- Website:
- Location:
- Twitter:
- Company:
- Icon url: https://avatars.githubusercontent.com/u/7275750?v=4
- Repositories: 11
- Last ynced at: 2026-09-25T07:37:22.761Z
- Profile URL: https://github.com/doorkeeper-gem
GitHub Events
Total
- Create event: 11
- Delete event: 10
- Fork event: 22
- Issue comment event: 124
- Issues event: 20
- Pull request event: 51
- Pull request review comment event: 120
- Pull request review event: 147
- Push event: 76
- Release event: 2
- Watch event: 146
Last Year
- Create event: 6
- Delete event: 6
- Fork event: 3
- Issue comment event: 31
- Issues event: 5
- Pull request event: 11
- Pull request review comment event: 35
- Pull request review event: 38
- Push event: 53
- Watch event: 19
Committers metadata
Last synced: about 15 hours ago
Total Commits: 2,115
Total Committers: 340
Avg Commits per committer: 6.221
Development Distribution Score (DDS): 0.808
Commits in past year: 234
Committers in past year: 15
Avg Commits per committer in past year: 15.6
Development Distribution Score (DDS) in past year: 0.385
| Name | Commits | |
|---|---|---|
| Nikita Bulai | b****a@g****m | 407 |
| Felipe Elias Philipp | f****s@g****m | 383 |
| Tute Costa | t****a@g****m | 213 |
| Kenta Ishizaki | k****i@5****p | 144 |
| Piotr Jakubowski | p****j@g****m | 71 |
| jasl | j****7@h****m | 57 |
| Jon Moss | me@j****e | 46 |
| Peter M. Goldstein | p****n@g****m | 27 |
| Linh Dang | d****k@g****m | 26 |
| dependabot[bot] | 4****] | 25 |
| Jaime Iniesta | j****a@g****m | 18 |
| Simon Bonnard | s****d@g****m | 16 |
| copilot-swe-agent[bot] | 1****t | 16 |
| Anthony Kirwan | a****n@g****m | 15 |
| Martin Lagrange | m****n@i****m | 15 |
| Peter Goldstein | p****n@y****m | 15 |
| Carol Nichols | c****s@g****m | 14 |
| Stas SUȘCOV | s****s@n****o | 13 |
| JeremyC-za | j****2@g****m | 13 |
| Kenn Ejima | k****a@g****m | 13 |
| Ransom Briggs | r****s@e****m | 13 |
| camero2734 | 4****4 | 11 |
| Emelia Smith | T****m | 10 |
| Kristine Robison | k****s@t****m | 10 |
| dependabot-preview[bot] | 2****] | 9 |
| Rishabh Sairawat | r****1@g****m | 9 |
| Justin Bull | j****n@w****m | 9 |
| Justin Bull | me@j****a | 7 |
| carvil | c****a@g****m | 7 |
| Ryan Schlesinger | r****n@r****m | 7 |
| and 310 more... | ||
Committer domains:
- ifeelgoods.com: 2
- outreach.io: 2
- wealthsimple.com: 2
- nedap.com: 2
- digitalocean.com: 2
- gmx.ch: 2
- gsa.gov: 2
- gitlab.com: 2
- freshbooks.com: 1
- alexkoppel.com: 1
- polleverywhere.com: 1
- qhrtech.com: 1
- phills.me.uk: 1
- posteo.net: 1
- kaeuferportal.de: 1
- digineo.de: 1
- dickey.xxx: 1
- procore.com: 1
- askcharlie.com: 1
- aircall.io: 1
- x-ion.de: 1
- patientslikeme.com: 1
- bonaud.fr: 1
- jora.com: 1
- square-enix.com: 1
- everfi.com: 1
- cookpad.com: 1
- q-centrix.com: 1
- avallain.com: 1
- tut.by: 1
- softswiss.com: 1
- wredny.net: 1
- teslamotors.com: 1
- lifx.co: 1
- playonsports.com: 1
- jestem.tw: 1
- lyzo.me: 1
- mpr.org: 1
- studyplus.jp: 1
- sequoiacap.com: 1
- simkim.net: 1
- centro.net: 1
- thoughtbot.com: 1
- dio.jp: 1
- oliverguenther.de: 1
- umich.edu: 1
- system88.com: 1
- crowdlab.com: 1
- bulknews.net: 1
- reidbeels.com: 1
- calendly.com: 1
- cassetteta.pe: 1
- ryanschlesinger.com: 1
- justinbull.ca: 1
- tout.com: 1
- ezcater.com: 1
- net.utcluj.ro: 1
- jonathanmoss.me: 1
- amritdhakal.com: 1
- creasty.com: 1
- galeckas.com: 1
- grosser.it: 1
- zavan.me: 1
- commercelayer.io: 1
- steinbergcomputing.com: 1
- bryanrite.com: 1
- wallace.net.nz: 1
- idaemons.org: 1
- innovaptor.com: 1
- meraki.net: 1
- worsley.co.nz: 1
- tanda.co: 1
- harmanly.com: 1
- thibaud.gg: 1
- garaio-rem.ch: 1
- bitproductions.com: 1
- chsc.dk: 1
- arcadia.com: 1
- riskmethods.net: 1
- brightbytes.net: 1
- sparksolutions.co: 1
- mindglob.com: 1
- 80percent.io: 1
- ferrandis.cool: 1
- adgear.com: 1
- thape.com.cn: 1
- 4angle.com: 1
- elskwid.net: 1
- flatstack.com: 1
- syngenta.com: 1
- zacwilliams.com: 1
- vinc.cc: 1
- tylerhunt.com: 1
- a07.com.au: 1
- oysterhr.com: 1
- leadjig.com: 1
- jevon.org: 1
- jeffreyc.com: 1
- grudev.com: 1
- yandex.ru: 1
- 42fu.com: 1
- introhive.com: 1
- shopify.com: 1
- exop-group.com: 1
- pentesterlab.com: 1
- glooko.com: 1
- koriroys.com: 1
- kerrizor.com: 1
- mbf.nifty.com: 1
- joshuakgoldberg.com: 1
- jhass.eu: 1
- crowdway.com: 1
- compton.nu: 1
- me.com: 1
- civisanalytics.com: 1
- kyronlearning.com: 1
- mcgeary.org: 1
- hisme.net: 1
- propertybase.com: 1
- grupainteger.pl: 1
- codecons.com: 1
- contentful.com: 1
- webtrends.com: 1
- viikii.com: 1
- embellishedvisions.com: 1
- zilverline.com: 1
- cloud.upwork.com: 1
- ihispano.com: 1
- prodivnet.com: 1
- youngcapital.nl: 1
- mavenlink.com: 1
- gmx.com: 1
- moodys.com: 1
- productplan.com: 1
- dependabot.com: 1
- cox.net: 1
- raphaelcosta.net: 1
- sourcebits.com: 1
- chalmers.it: 1
- debian.org: 1
- doorkeeper.jp: 1
- clixifix.co.uk: 1
- welltravel.com: 1
- platterz.ca: 1
- thomas-romera.com: 1
- tazsingh.com: 1
- stuartolivera.com: 1
- advancedcontrol.com.au: 1
- stefansundin.com: 1
- 55728.jp: 1
Issue and Pull Request metadata
Last synced: about 15 hours ago
Total issues: 155
Total pull requests: 306
Average time to close issues: about 1 year
Average time to close pull requests: about 1 month
Total issue authors: 112
Total pull request authors: 70
Average comments per issue: 4.39
Average comments per pull request: 2.27
Merged pull request: 219
Bot issues: 1
Bot pull requests: 31
Past year issues: 31
Past year pull requests: 141
Past year average time to close issues: about 1 month
Past year average time to close pull requests: 5 days
Past year issue authors: 15
Past year pull request authors: 17
Past year average comments per issue: 2.39
Past year average comments per pull request: 2.38
Past year merged pull request: 102
Past year bot issues: 0
Past year bot pull requests: 10
Top Issue Authors
- ThisIsMissEm (17)
- 55728 (9)
- ransombriggs (7)
- nov (3)
- kmayer (3)
- stevetsanders (2)
- matthewheath (2)
- brent-cybrid (2)
- verenion (2)
- j-seixas (2)
- hickford (2)
- PhilippeChab (2)
- leoarnold (2)
- mroach (2)
- pakwfoley (1)
Top Pull Request Authors
- 55728 (96)
- nbulaj (39)
- dependabot[bot] (31)
- ThisIsMissEm (15)
- ransombriggs (9)
- Copilot (6)
- naitoh (6)
- stanhu (6)
- JeremyC-za (5)
- eglitobias (5)
- gkemmey (4)
- sato11 (4)
- lurz (4)
- kmayer (4)
- ydah (3)
Top Issue Labels
- wontfix (16)
- feature request (10)
- pinned (9)
- enhancement (7)
- RFC (6)
- bug? (5)
- bug (5)
- question/discussion (4)
- security (3)
- help wanted (2)
- ruby (1)
- spec (1)
- refactor (1)
- dependencies (1)
- docs (1)
Top Pull Request Labels
- dependencies (31)
- ruby (20)
- github_actions (11)
- Skip-Changelog (6)
- wontfix (6)
- spec (3)
- pinned (2)
- WIP (2)
- bug (1)
- enhancement (1)
- refactor (1)
Package metadata
- Total packages: 14
-
Total downloads:
- rubygems: 230,669,022 total
- Total docker downloads: 1,163,654,018
- Total dependent packages: 41 (may contain duplicates)
- Total dependent repositories: 5,404 (may contain duplicates)
- Total versions: 380
- Total maintainers: 5
- Total advisories: 14
gem.coop: doorkeeper
Doorkeeper is an OAuth 2 provider for Rails and Grape.
- Homepage: https://github.com/doorkeeper-gem/doorkeeper
- Documentation: http://www.rubydoc.info/gems/doorkeeper/
- Licenses: MIT
- Latest release: 5.9.9 (published 7 days ago)
- Last Synced: 2026-09-30T08:00:58.392Z (1 day ago)
- Versions: 135
- Dependent Packages: 0
- Dependent Repositories: 0
- Downloads: 115,283,668 Total
- Docker Downloads: 581,827,009
-
Rankings:
- Dependent repos count: 0.0%
- Dependent packages count: 0.0%
- Average: 0.083%
- Downloads: 0.248%
- Maintainers (5)
-
Funding:
- https://opencollective.com/doorkeeper-gem
-
Advisories:
- Doorkeeper subject to Incorrect Permission Assignment
- Doorkeeper vulnerable to Cross-site Request Forgery
- Moderate severity vulnerability that affects doorkeeper
- Doorkeeper is vulnerable to stored XSS and code execution
- Doorkeeper Improper Authentication vulnerability
- Doorkeeper is vulnerable to replay attacks
- Exposure of Sensitive Information to an Unauthorized Actor in Doorkeeper
rubygems.org: doorkeeper
Doorkeeper is an OAuth 2 provider for Rails and Grape.
- Homepage: https://github.com/doorkeeper-gem/doorkeeper
- Documentation: http://www.rubydoc.info/gems/doorkeeper/
- Licenses: MIT
- Latest release: 5.9.9 (published 7 days ago)
- Last Synced: 2026-10-01T08:19:20.099Z (about 15 hours ago)
- Versions: 135
- Dependent Packages: 41
- Dependent Repositories: 5,403
- Downloads: 115,385,354 Total
- Docker Downloads: 581,827,009
-
Rankings:
- Docker downloads count: 0.188%
- Stargazers count: 0.238%
- Downloads: 0.323%
- Average: 0.375%
- Dependent repos count: 0.432%
- Forks count: 0.434%
- Dependent packages count: 0.632%
- Maintainers (5)
-
Funding:
- https://opencollective.com/doorkeeper-gem
-
Advisories:
- Doorkeeper Improper Authentication vulnerability
- Exposure of Sensitive Information to an Unauthorized Actor in Doorkeeper
- Doorkeeper vulnerable to Cross-site Request Forgery
- Moderate severity vulnerability that affects doorkeeper
- Doorkeeper subject to Incorrect Permission Assignment
- Doorkeeper is vulnerable to stored XSS and code execution
- Doorkeeper is vulnerable to replay attacks
proxy.golang.org: github.com/doorkeeper-gem/doorkeeper
- Homepage:
- Documentation: https://pkg.go.dev/github.com/doorkeeper-gem/doorkeeper#section-documentation
- Licenses: mit
- Latest release: v5.9.9+incompatible (published 7 days ago)
- Last Synced: 2026-09-30T08:01:00.099Z (1 day ago)
- Versions: 99
- Dependent Packages: 0
- Dependent Repositories: 1
-
Rankings:
- Forks count: 0.823%
- Stargazers count: 0.93%
- Average: 3.75%
- Dependent repos count: 4.794%
- Dependent packages count: 8.453%
debian-10: ruby-doorkeeper
- Homepage: https://github.com/doorkeeper-gem/doorkeeper
- Documentation: https://packages.debian.org/buster/ruby-doorkeeper
- Licenses: mit
- Latest release: 4.4.2-1 (published 8 months ago)
- Last Synced: 2026-03-13T20:01:52.875Z (7 months ago)
- Versions: 1
- Dependent Packages: 0
- Dependent Repositories: 0
-
Rankings:
- Dependent repos count: 0.0%
- Dependent packages count: 0.0%
- Average: 100%
ubuntu-24.10: ruby-doorkeeper
- Homepage: https://github.com/doorkeeper-gem/doorkeeper
- Licenses: mit
- Latest release: 5.6.6-2 (published 8 months ago)
- Last Synced: 2026-03-09T17:04:52.233Z (7 months ago)
- Versions: 1
- Dependent Packages: 0
- Dependent Repositories: 0
-
Rankings:
- Dependent repos count: 0.0%
- Dependent packages count: 0.0%
- Average: 100%
ubuntu-23.04: ruby-doorkeeper
- Homepage: https://github.com/doorkeeper-gem/doorkeeper
- Licenses: mit
- Latest release: 5.5.0-2 (published 8 months ago)
- Last Synced: 2026-03-11T14:11:46.900Z (7 months ago)
- Versions: 1
- Dependent Packages: 0
- Dependent Repositories: 0
-
Rankings:
- Dependent repos count: 0.0%
- Dependent packages count: 0.0%
- Average: 100%
ubuntu-20.04: ruby-doorkeeper
- Homepage: https://github.com/doorkeeper-gem/doorkeeper
- Licenses: mit
- Latest release: 5.0.2-2 (published 8 months ago)
- Last Synced: 2026-03-13T20:21:54.482Z (7 months ago)
- Versions: 1
- Dependent Packages: 0
- Dependent Repositories: 0
-
Rankings:
- Dependent repos count: 0.0%
- Dependent packages count: 0.0%
- Average: 100%
debian-11: ruby-doorkeeper
- Homepage: https://github.com/doorkeeper-gem/doorkeeper
- Documentation: https://packages.debian.org/bullseye/ruby-doorkeeper
- Licenses: mit
- Latest release: 5.3.0-2 (published 8 months ago)
- Last Synced: 2026-08-01T00:04:55.146Z (2 months ago)
- Versions: 1
- Dependent Packages: 0
- Dependent Repositories: 0
-
Rankings:
- Dependent repos count: 0.0%
- Dependent packages count: 0.0%
- Average: 100%
pkgsrc-netbsd-x86_64-10.1-all: www/ruby-doorkeeper
OAuth 2 provider for Rails and Grape
- Homepage: https://github.com/doorkeeper-gem/doorkeeper
- Documentation: https://pkgsrc.se/www/ruby-doorkeeper
- Licenses: mit
- Latest release: 5.8.2 (published 6 months ago)
- Last Synced: 2026-05-27T10:51:42.069Z (4 months ago)
- Versions: 1
- Dependent Packages: 0
- Dependent Repositories: 0
-
Rankings:
- Dependent repos count: 0.0%
- Dependent packages count: 0.0%
- Average: 100%
debian-13: ruby-doorkeeper
- Homepage: https://github.com/doorkeeper-gem/doorkeeper
- Documentation: https://packages.debian.org/trixie/ruby-doorkeeper
- Licenses: mit
- Latest release: 5.6.6-2 (published 8 months ago)
- Last Synced: 2026-07-29T05:01:13.450Z (2 months ago)
- Versions: 1
- Dependent Packages: 0
- Dependent Repositories: 0
-
Rankings:
- Dependent repos count: 0.0%
- Dependent packages count: 0.0%
- Average: 100%
ubuntu-22.04: ruby-doorkeeper
- Homepage: https://github.com/doorkeeper-gem/doorkeeper
- Licenses: mit
- Latest release: 5.5.0-2 (published 8 months ago)
- Last Synced: 2026-08-08T22:04:22.457Z (about 2 months ago)
- Versions: 1
- Dependent Packages: 0
- Dependent Repositories: 0
-
Rankings:
- Dependent repos count: 0.0%
- Dependent packages count: 0.0%
- Average: 100%
ubuntu-23.10: ruby-doorkeeper
- Homepage: https://github.com/doorkeeper-gem/doorkeeper
- Licenses: mit
- Latest release: 5.6.6-2 (published 8 months ago)
- Last Synced: 2026-03-13T19:23:27.564Z (7 months ago)
- Versions: 1
- Dependent Packages: 0
- Dependent Repositories: 0
-
Rankings:
- Dependent repos count: 0.0%
- Dependent packages count: 0.0%
- Average: 100%
debian-12: ruby-doorkeeper
- Homepage: https://github.com/doorkeeper-gem/doorkeeper
- Documentation: https://packages.debian.org/bookworm/ruby-doorkeeper
- Licenses: mit
- Latest release: 5.5.0-2+deb12u1 (published 8 months ago)
- Last Synced: 2026-03-13T23:42:58.016Z (7 months ago)
- Versions: 1
- Dependent Packages: 0
- Dependent Repositories: 0
-
Rankings:
- Dependent repos count: 0.0%
- Dependent packages count: 0.0%
- Average: 100%
Dependencies
- actions/checkout v3 composite
- ruby/setup-ruby v1 composite
- ruby 2.6.5-alpine build
- activerecord-jdbcsqlite3-adapter >= 0
- bcrypt ~> 3.1
- rails >= 6.0, < 7.1
- rspec-core >= 0
- rspec-expectations >= 0
- rspec-mocks >= 0
- rspec-rails ~> 6.0
- rspec-support >= 0
- rubocop ~> 1.4
- rubocop-performance >= 0
- rubocop-rails >= 0
- rubocop-rspec >= 0
- sprockets-rails >= 0
- timecop >= 0
- appraisal >= 0 development
- capybara >= 0 development
- coveralls_reborn >= 0 development
- database_cleaner ~> 2.0 development
- factory_bot ~> 6.0 development
- generator_spec ~> 0.9.3 development
- grape >= 0 development
- rake >= 11.3.0 development
- rspec-rails >= 0 development
- timecop >= 0 development
- railties >= 5
- actions/checkout 3d3c42e5aac5ba805825da76410c181273ba90b1 composite
- ruby/setup-ruby 1a615958ad9d422dd932dc1d5823942ee002799f composite
- rubygems/configure-rubygems-credentials dc5a8d8553e6ee01fc26761a49e99e733d17954a composite
- actions/checkout v7.0.1 composite
- dangoslen/changelog-enforcer v3.7.0 composite
- dorny/paths-filter v4 composite
- actions/checkout 3d3c42e5aac5ba805825da76410c181273ba90b1 composite
- reviewdog/action-rubocop b6d5e953a5fc0bf3ab65254e77730ea2174d6d6d composite
- ruby/setup-ruby 1a615958ad9d422dd932dc1d5823942ee002799f composite
Score: 35.50491589851181