devise_oauth2_providable 0.1.0 → 0.1.1
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.
- data/CONTRIBUTORS.txt +1 -1
- data/Gemfile +1 -1
- data/README.md +82 -9
- data/lib/devise_oauth2_providable/engine.rb +1 -0
- data/lib/devise_oauth2_providable/schema.rb +6 -0
- data/lib/devise_oauth2_providable/version.rb +1 -1
- metadata +4 -4
data/CONTRIBUTORS.txt
CHANGED
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -1,36 +1,109 @@
|
|
1
|
-
#
|
1
|
+
# devise_oauth2_providable
|
2
2
|
|
3
|
-
|
3
|
+
Rails3 engine that brings OAuth2 Provider support to your application.
|
4
4
|
|
5
|
+
Current OAuth2 Specification Draft:
|
5
6
|
http://tools.ietf.org/html/draft-ietf-oauth-v2-15
|
6
7
|
|
8
|
+
## Features
|
9
|
+
|
10
|
+
* integrates OAuth2 authentication with Devise authenthentication stack
|
11
|
+
* one-stop-shop includes all Models, Controllers and Views to get up and
|
12
|
+
running quickly
|
13
|
+
* All server requests support authentication via bearer token included in
|
14
|
+
the request. http://tools.ietf.org/html/draft-ietf-oauth-v2-bearer-04
|
15
|
+
|
16
|
+
|
7
17
|
## Installation
|
8
18
|
|
9
19
|
```ruby
|
10
20
|
# Bundler Gemfile
|
11
|
-
gem '
|
21
|
+
gem 'devise_oauth2_providable'
|
12
22
|
```
|
13
23
|
|
14
24
|
```ruby
|
15
25
|
# create new Rails migration
|
16
26
|
class CreateOauth2Schema < ActiveRecord::Migration
|
17
27
|
def self.up
|
18
|
-
Devise::
|
28
|
+
Devise::Oauth2Providable:Schema.up(self)
|
19
29
|
end
|
20
30
|
def self.down
|
21
|
-
Devise::
|
31
|
+
Devise::Oauth2Providable::Schema.down(self)
|
22
32
|
end
|
23
33
|
end
|
24
34
|
```
|
25
|
-
|
26
|
-
## Usage
|
27
|
-
|
28
35
|
```ruby
|
29
36
|
class User
|
30
|
-
|
37
|
+
# NOTE: include :database_authenticatable configuration
|
38
|
+
# if supporting Resource Owner Password Credentials Grant Type
|
39
|
+
devise :oauth2_providable
|
31
40
|
end
|
32
41
|
```
|
33
42
|
|
43
|
+
## Models
|
44
|
+
|
45
|
+
### Client
|
46
|
+
registered OAuth2 client for storing the unique client_id and
|
47
|
+
client_secret.
|
48
|
+
|
49
|
+
### AccessToken
|
50
|
+
http://tools.ietf.org/html/draft-ietf-oauth-v2-15#section-1.3
|
51
|
+
|
52
|
+
Short lived token used by clients to perform subsequent requests (see
|
53
|
+
bearer token spec)
|
54
|
+
|
55
|
+
expires after 15min by default.
|
56
|
+
|
57
|
+
### RefreshToken
|
58
|
+
http://tools.ietf.org/html/draft-ietf-oauth-v2-15#section-1.5
|
59
|
+
|
60
|
+
Long lived token used by clients to request new access tokens without
|
61
|
+
requiring user intervention to re-authorize.
|
62
|
+
|
63
|
+
expires after 1 month by default.
|
64
|
+
|
65
|
+
### AthorizationCode
|
66
|
+
http://tools.ietf.org/html/draft-ietf-oauth-v2-15#section-1.4.1
|
67
|
+
|
68
|
+
*Very* short lived token created to allow a client to request an access
|
69
|
+
token after a user has gone through the authorization flow.
|
70
|
+
|
71
|
+
expires after 1min by default.
|
72
|
+
|
73
|
+
## Routes
|
74
|
+
|
75
|
+
### /oauth2/authorize
|
76
|
+
http://tools.ietf.org/html/draft-ietf-oauth-v2-15#section-2.1
|
77
|
+
|
78
|
+
Endpoint to start client authorization flow. Models, controllers and
|
79
|
+
views are included for out of the box deployment.
|
80
|
+
|
81
|
+
Supports the Authorization Code and Implicit grant types.
|
82
|
+
|
83
|
+
### /oauth2/token
|
84
|
+
http://tools.ietf.org/html/draft-ietf-oauth-v2-15#section-2.2
|
85
|
+
|
86
|
+
Endpoint to request access token. See grant type documentation for
|
87
|
+
supported flows.
|
88
|
+
|
89
|
+
## Grant Types
|
90
|
+
|
91
|
+
### Resource Owner Password Credentials Grant Type
|
92
|
+
http://tools.ietf.org/html/draft-ietf-oauth-v2-15#section-4.3
|
93
|
+
|
94
|
+
in order to use the Resource Owner Password Credentials Grant Type, your
|
95
|
+
Devise model *must* be configured to support the
|
96
|
+
:database_authenticatable option
|
97
|
+
|
98
|
+
### Authorization Code Grant Type
|
99
|
+
http://tools.ietf.org/html/draft-ietf-oauth-v2-15#section-4.1
|
100
|
+
|
101
|
+
### Implicit Grant Type
|
102
|
+
http://tools.ietf.org/html/draft-ietf-oauth-v2-15#section-4.2
|
103
|
+
|
104
|
+
### Refresh Token Grant Type
|
105
|
+
http://tools.ietf.org/html/draft-ietf-oauth-v2-15#section-6
|
106
|
+
|
34
107
|
## Contributing
|
35
108
|
|
36
109
|
* Fork the project
|
@@ -2,6 +2,7 @@ module Devise
|
|
2
2
|
module Oauth2Providable
|
3
3
|
class Engine < Rails::Engine
|
4
4
|
initializer "devise_oauth2_providable.initialize_application" do |app|
|
5
|
+
app.config.filter_parameters << :client_secret
|
5
6
|
app.middleware.use Rack::OAuth2::Server::Resource::Bearer, 'OAuth2 Bearer Token Resources' do |req|
|
6
7
|
AccessToken.valid.find_by_token(req.access_token) || req.invalid_token!
|
7
8
|
end
|
@@ -22,6 +22,8 @@ module Devise
|
|
22
22
|
end
|
23
23
|
migration.add_index :access_tokens, :token
|
24
24
|
migration.add_index :access_tokens, :expires_at
|
25
|
+
migration.add_index :access_tokens, :user_id
|
26
|
+
migration.add_index :access_tokens, :client_id
|
25
27
|
|
26
28
|
migration.create_table :refresh_tokens do |t|
|
27
29
|
t.belongs_to :user, :client
|
@@ -31,6 +33,8 @@ module Devise
|
|
31
33
|
end
|
32
34
|
migration.add_index :refresh_tokens, :token
|
33
35
|
migration.add_index :refresh_tokens, :expires_at
|
36
|
+
migration.add_index :refresh_tokens, :user_id
|
37
|
+
migration.add_index :refresh_tokens, :client_id
|
34
38
|
|
35
39
|
migration.create_table :authorization_codes do |t|
|
36
40
|
t.belongs_to :user, :client
|
@@ -41,6 +45,8 @@ module Devise
|
|
41
45
|
end
|
42
46
|
migration.add_index :authorization_codes, :token
|
43
47
|
migration.add_index :authorization_codes, :expires_at
|
48
|
+
migration.add_index :authorization_codes, :user_id
|
49
|
+
migration.add_index :authorization_codes, :client_id
|
44
50
|
end
|
45
51
|
|
46
52
|
def self.down(migration)
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: devise_oauth2_providable
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 25
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 0.1.
|
9
|
+
- 1
|
10
|
+
version: 0.1.1
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Ryan Sonnek
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-04-
|
18
|
+
date: 2011-04-27 00:00:00 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
name: rails
|