Home

Awesome

Doorkeeper — awesome OAuth 2 provider for your Rails / Grape app.

Gem Version CI Code Climate Coverage Status Reviewed by Hound GuardRails badge Dependabot

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:

Table of Contents

<!-- START doctoc generated TOC please keep comment here to allow auto update --> <!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE --> <!-- END doctoc generated TOC please keep comment here to allow auto update -->

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:

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:

ORMSupport via
Active Recordby default
MongoDBdoorkeeper-gem/doorkeeper-mongodb
Sequelnbulaj/doorkeeper-sequel
Couchbaseacaprojects/doorkeeper-couchbase
RethinkDBaca-labs/doorkeeper-rethinkdb

Extensions

Extensions that are not included by default and can be installed separately.

Link
OpenID Connect extensiondoorkeeper-gem/doorkeeper-openid_connect
JWT Token supportdoorkeeper-gem/doorkeeper-jwt
Assertion grant extensiondoorkeeper-gem/doorkeeper-grants_assertion
I18n translationsdoorkeeper-gem/doorkeeper-i18n
CIBA - Client Initiated Backchannel Authentication Flow extensiondoorkeeper-ciba
Device Authorization Grantdoorkeeper-device_authorization_grant

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.

ApplicationLink
OAuth2 Server with Doorkeeperdoorkeeper-gem/doorkeeper-provider-app
Sinatra Client connected to Provider Appdoorkeeper-gem/doorkeeper-sinatra-client
Devise + Omniauth Clientdoorkeeper-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

OpenCollective OpenCollective

Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [Become a sponsor]

<a href="https://codecademy.com/about/careers?utm_source=doorkeeper-gem" target="_blank"><img src="https://static-assets.codecademy.com/marketing/codecademy_logo_padded.png"/></a>

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

<br>

<a href="https://oauth.io/?utm_source=doorkeeper-gem" target="_blank"><img src="https://oauth.io/img/logo_text.png"/></a>

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

<br>

<a href="https://www.wealthsimple.com/?utm_source=doorkeeper-gem" target="_blank"><img src="https://wealthsimple.s3.amazonaws.com/branding/medium-black.svg"/></a>

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!

<a href="https://github.com/doorkeeper-gem/doorkeeper/graphs/contributors"><img src="https://opencollective.com/doorkeeper-gem/contributors.svg?width=890&button=false" /></a>

License

MIT License. Created in Applicake. Maintained by the community.