stormpath-omniauth 1.0.0.beta
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/README.md +73 -0
- data/Rakefile +32 -0
- data/lib/omniauth/strategies/stormpath.rb +40 -0
- data/lib/stormpath-omniauth/version.rb +3 -0
- data/lib/stormpath-omniauth.rb +3 -0
- metadata +292 -0
data/README.md
ADDED
@@ -0,0 +1,73 @@
|
|
1
|
+
# Stormpath OmniAuth Strategy
|
2
|
+
|
3
|
+
Stormpath is the first easy, secure user management and authentication service
|
4
|
+
for developers. This is an OmniAuth strategy that will integrate with Stormpath.
|
5
|
+
|
6
|
+
## Quickstart Guide
|
7
|
+
|
8
|
+
1. From the root of the repo, navigate to the dummy directory and execute the
|
9
|
+
following Rake tasks:
|
10
|
+
|
11
|
+
```sh
|
12
|
+
cd spec/dummy
|
13
|
+
rake db:migrate
|
14
|
+
rake db:test:prepare
|
15
|
+
```
|
16
|
+
|
17
|
+
1. You should then be able to run the full suite of specs from the root of the
|
18
|
+
repo, like so:
|
19
|
+
|
20
|
+
```sh
|
21
|
+
rake spec
|
22
|
+
```
|
23
|
+
|
24
|
+
## Required Configuration Options
|
25
|
+
|
26
|
+
In order to use the Stormpath OmniAuth Strategy, three configuration options
|
27
|
+
must be specified. These options can be passed in a hash (second parameter of
|
28
|
+
the Strategy constructor), or (more commonly) set up by Rack during the "setup"
|
29
|
+
phase.
|
30
|
+
|
31
|
+
With Rack:
|
32
|
+
|
33
|
+
```ruby
|
34
|
+
Rails.application.config.middleware.use OmniAuth::Builder do
|
35
|
+
provider :stormpath, :setup => lambda { |env|
|
36
|
+
env['omniauth.strategy'].options[:auth_redirect] = '/session/new'
|
37
|
+
env['omniauth.strategy'].options[:authenticator_class] = ::User
|
38
|
+
env['omniauth.strategy'].options[:obtain_uid] = Proc.new { |o| o.stormpath_url }
|
39
|
+
}
|
40
|
+
end
|
41
|
+
```
|
42
|
+
|
43
|
+
A quick explanation of the three required options:
|
44
|
+
|
45
|
+
### auth_redirect
|
46
|
+
|
47
|
+
Where to redirect the browser in order to display a form that will collect
|
48
|
+
login information.
|
49
|
+
|
50
|
+
### authenticator_class
|
51
|
+
|
52
|
+
A class who will implement a method "authenticate" and return an object
|
53
|
+
representation (or superset) of a Stormpath Account. If you're using
|
54
|
+
stormpath-rails, this will be the class that's included the
|
55
|
+
Stormpath::Rails::Account module (::User, in this project's sample app).
|
56
|
+
|
57
|
+
### obtain_uid
|
58
|
+
|
59
|
+
A method invoked on the object returned from the "authenticate" method which
|
60
|
+
returns a value that OmniAuth uses to uniquely identify a user in your system.
|
61
|
+
If you're using stormpath-rails, this will look something like:
|
62
|
+
|
63
|
+
```ruby
|
64
|
+
obtain_uid = Proc.new { |obj| obj.stormpath_url }
|
65
|
+
```
|
66
|
+
|
67
|
+
If your application is not storing any Stormpath data in a local database and
|
68
|
+
your authenticate method returned an instance of Stormpath::Resource::Account,
|
69
|
+
then this method could look like:
|
70
|
+
|
71
|
+
```ruby
|
72
|
+
obtain_uid = Proc.new { |account| account.href }
|
73
|
+
```
|
data/Rakefile
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
#!/usr/bin/env rake
|
2
|
+
begin
|
3
|
+
require 'bundler/setup'
|
4
|
+
rescue LoadError
|
5
|
+
puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
|
6
|
+
end
|
7
|
+
begin
|
8
|
+
require 'rdoc/task'
|
9
|
+
rescue LoadError
|
10
|
+
require 'rdoc/rdoc'
|
11
|
+
require 'rake/rdoctask'
|
12
|
+
RDoc::Task = Rake::RDocTask
|
13
|
+
end
|
14
|
+
|
15
|
+
RDoc::Task.new(:rdoc) do |rdoc|
|
16
|
+
rdoc.rdoc_dir = 'rdoc'
|
17
|
+
rdoc.title = 'StormpathOmniauth'
|
18
|
+
rdoc.options << '--line-numbers'
|
19
|
+
rdoc.rdoc_files.include('README.rdoc')
|
20
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
21
|
+
end
|
22
|
+
|
23
|
+
require "rspec/core/rake_task"
|
24
|
+
|
25
|
+
RSpec::Core::RakeTask.new
|
26
|
+
|
27
|
+
task :default => :spec
|
28
|
+
task :test => :spec
|
29
|
+
|
30
|
+
|
31
|
+
Bundler::GemHelper.install_tasks
|
32
|
+
|
@@ -0,0 +1,40 @@
|
|
1
|
+
require 'stormpath-sdk'
|
2
|
+
|
3
|
+
module OmniAuth
|
4
|
+
module Strategies
|
5
|
+
class Stormpath
|
6
|
+
include OmniAuth::Strategy
|
7
|
+
|
8
|
+
option :login_field, :email_or_username
|
9
|
+
option :password_field, :password
|
10
|
+
option :stormpath_application, nil
|
11
|
+
|
12
|
+
def callback_phase
|
13
|
+
raise 'missing stormpath_application' unless options[:stormpath_application]
|
14
|
+
|
15
|
+
begin
|
16
|
+
login_request = ::Stormpath::Authentication::UsernamePasswordRequest.new(login, password)
|
17
|
+
auth_result = options[:stormpath_application].authenticate_account(login_request)
|
18
|
+
@account = auth_result.account
|
19
|
+
rescue
|
20
|
+
return fail!(:invalid_credentials)
|
21
|
+
end
|
22
|
+
|
23
|
+
super
|
24
|
+
end
|
25
|
+
|
26
|
+
def login
|
27
|
+
request[options[:login_field].to_s]
|
28
|
+
end
|
29
|
+
|
30
|
+
def password
|
31
|
+
request[options[:password_field].to_s]
|
32
|
+
end
|
33
|
+
|
34
|
+
uid do
|
35
|
+
@account.href
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
metadata
ADDED
@@ -0,0 +1,292 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: stormpath-omniauth
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0.beta
|
5
|
+
prerelease: 6
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Boram Yoon
|
9
|
+
- Erin Swenson-Healey
|
10
|
+
autorequire:
|
11
|
+
bindir: bin
|
12
|
+
cert_chain: []
|
13
|
+
date: 2013-06-13 00:00:00.000000000 Z
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: bcrypt-ruby
|
17
|
+
requirement: !ruby/object:Gem::Requirement
|
18
|
+
none: false
|
19
|
+
requirements:
|
20
|
+
- - ~>
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '3.0'
|
23
|
+
type: :runtime
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
none: false
|
27
|
+
requirements:
|
28
|
+
- - ~>
|
29
|
+
- !ruby/object:Gem::Version
|
30
|
+
version: '3.0'
|
31
|
+
- !ruby/object:Gem::Dependency
|
32
|
+
name: omniauth
|
33
|
+
requirement: !ruby/object:Gem::Requirement
|
34
|
+
none: false
|
35
|
+
requirements:
|
36
|
+
- - ~>
|
37
|
+
- !ruby/object:Gem::Version
|
38
|
+
version: '1.0'
|
39
|
+
type: :runtime
|
40
|
+
prerelease: false
|
41
|
+
version_requirements: !ruby/object:Gem::Requirement
|
42
|
+
none: false
|
43
|
+
requirements:
|
44
|
+
- - ~>
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '1.0'
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: stormpath-sdk
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - '='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 1.0.0.beta
|
55
|
+
type: :runtime
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: !ruby/object:Gem::Requirement
|
58
|
+
none: false
|
59
|
+
requirements:
|
60
|
+
- - '='
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: 1.0.0.beta
|
63
|
+
- !ruby/object:Gem::Dependency
|
64
|
+
name: capybara
|
65
|
+
requirement: !ruby/object:Gem::Requirement
|
66
|
+
none: false
|
67
|
+
requirements:
|
68
|
+
- - ~>
|
69
|
+
- !ruby/object:Gem::Version
|
70
|
+
version: 1.1.2
|
71
|
+
type: :development
|
72
|
+
prerelease: false
|
73
|
+
version_requirements: !ruby/object:Gem::Requirement
|
74
|
+
none: false
|
75
|
+
requirements:
|
76
|
+
- - ~>
|
77
|
+
- !ruby/object:Gem::Version
|
78
|
+
version: 1.1.2
|
79
|
+
- !ruby/object:Gem::Dependency
|
80
|
+
name: guard-rspec
|
81
|
+
requirement: !ruby/object:Gem::Requirement
|
82
|
+
none: false
|
83
|
+
requirements:
|
84
|
+
- - ! '>='
|
85
|
+
- !ruby/object:Gem::Version
|
86
|
+
version: '0'
|
87
|
+
type: :development
|
88
|
+
prerelease: false
|
89
|
+
version_requirements: !ruby/object:Gem::Requirement
|
90
|
+
none: false
|
91
|
+
requirements:
|
92
|
+
- - ! '>='
|
93
|
+
- !ruby/object:Gem::Version
|
94
|
+
version: '0'
|
95
|
+
- !ruby/object:Gem::Dependency
|
96
|
+
name: guard-spork
|
97
|
+
requirement: !ruby/object:Gem::Requirement
|
98
|
+
none: false
|
99
|
+
requirements:
|
100
|
+
- - ! '>='
|
101
|
+
- !ruby/object:Gem::Version
|
102
|
+
version: '0'
|
103
|
+
type: :development
|
104
|
+
prerelease: false
|
105
|
+
version_requirements: !ruby/object:Gem::Requirement
|
106
|
+
none: false
|
107
|
+
requirements:
|
108
|
+
- - ! '>='
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: jquery-rails
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
none: false
|
115
|
+
requirements:
|
116
|
+
- - ! '>='
|
117
|
+
- !ruby/object:Gem::Version
|
118
|
+
version: '0'
|
119
|
+
type: :development
|
120
|
+
prerelease: false
|
121
|
+
version_requirements: !ruby/object:Gem::Requirement
|
122
|
+
none: false
|
123
|
+
requirements:
|
124
|
+
- - ! '>='
|
125
|
+
- !ruby/object:Gem::Version
|
126
|
+
version: '0'
|
127
|
+
- !ruby/object:Gem::Dependency
|
128
|
+
name: pry
|
129
|
+
requirement: !ruby/object:Gem::Requirement
|
130
|
+
none: false
|
131
|
+
requirements:
|
132
|
+
- - ! '>='
|
133
|
+
- !ruby/object:Gem::Version
|
134
|
+
version: '0'
|
135
|
+
type: :development
|
136
|
+
prerelease: false
|
137
|
+
version_requirements: !ruby/object:Gem::Requirement
|
138
|
+
none: false
|
139
|
+
requirements:
|
140
|
+
- - ! '>='
|
141
|
+
- !ruby/object:Gem::Version
|
142
|
+
version: '0'
|
143
|
+
- !ruby/object:Gem::Dependency
|
144
|
+
name: pry-debugger
|
145
|
+
requirement: !ruby/object:Gem::Requirement
|
146
|
+
none: false
|
147
|
+
requirements:
|
148
|
+
- - ! '>='
|
149
|
+
- !ruby/object:Gem::Version
|
150
|
+
version: '0'
|
151
|
+
type: :development
|
152
|
+
prerelease: false
|
153
|
+
version_requirements: !ruby/object:Gem::Requirement
|
154
|
+
none: false
|
155
|
+
requirements:
|
156
|
+
- - ! '>='
|
157
|
+
- !ruby/object:Gem::Version
|
158
|
+
version: '0'
|
159
|
+
- !ruby/object:Gem::Dependency
|
160
|
+
name: rails
|
161
|
+
requirement: !ruby/object:Gem::Requirement
|
162
|
+
none: false
|
163
|
+
requirements:
|
164
|
+
- - ~>
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: 3.2.1
|
167
|
+
type: :development
|
168
|
+
prerelease: false
|
169
|
+
version_requirements: !ruby/object:Gem::Requirement
|
170
|
+
none: false
|
171
|
+
requirements:
|
172
|
+
- - ~>
|
173
|
+
- !ruby/object:Gem::Version
|
174
|
+
version: 3.2.1
|
175
|
+
- !ruby/object:Gem::Dependency
|
176
|
+
name: rspec-rails
|
177
|
+
requirement: !ruby/object:Gem::Requirement
|
178
|
+
none: false
|
179
|
+
requirements:
|
180
|
+
- - ! '>='
|
181
|
+
- !ruby/object:Gem::Version
|
182
|
+
version: '0'
|
183
|
+
type: :development
|
184
|
+
prerelease: false
|
185
|
+
version_requirements: !ruby/object:Gem::Requirement
|
186
|
+
none: false
|
187
|
+
requirements:
|
188
|
+
- - ! '>='
|
189
|
+
- !ruby/object:Gem::Version
|
190
|
+
version: '0'
|
191
|
+
- !ruby/object:Gem::Dependency
|
192
|
+
name: sqlite3
|
193
|
+
requirement: !ruby/object:Gem::Requirement
|
194
|
+
none: false
|
195
|
+
requirements:
|
196
|
+
- - ! '>='
|
197
|
+
- !ruby/object:Gem::Version
|
198
|
+
version: '0'
|
199
|
+
type: :development
|
200
|
+
prerelease: false
|
201
|
+
version_requirements: !ruby/object:Gem::Requirement
|
202
|
+
none: false
|
203
|
+
requirements:
|
204
|
+
- - ! '>='
|
205
|
+
- !ruby/object:Gem::Version
|
206
|
+
version: '0'
|
207
|
+
- !ruby/object:Gem::Dependency
|
208
|
+
name: stormpath-rails
|
209
|
+
requirement: !ruby/object:Gem::Requirement
|
210
|
+
none: false
|
211
|
+
requirements:
|
212
|
+
- - ! '>='
|
213
|
+
- !ruby/object:Gem::Version
|
214
|
+
version: '0'
|
215
|
+
type: :development
|
216
|
+
prerelease: false
|
217
|
+
version_requirements: !ruby/object:Gem::Requirement
|
218
|
+
none: false
|
219
|
+
requirements:
|
220
|
+
- - ! '>='
|
221
|
+
- !ruby/object:Gem::Version
|
222
|
+
version: '0'
|
223
|
+
- !ruby/object:Gem::Dependency
|
224
|
+
name: vcr
|
225
|
+
requirement: !ruby/object:Gem::Requirement
|
226
|
+
none: false
|
227
|
+
requirements:
|
228
|
+
- - ! '>='
|
229
|
+
- !ruby/object:Gem::Version
|
230
|
+
version: '0'
|
231
|
+
type: :development
|
232
|
+
prerelease: false
|
233
|
+
version_requirements: !ruby/object:Gem::Requirement
|
234
|
+
none: false
|
235
|
+
requirements:
|
236
|
+
- - ! '>='
|
237
|
+
- !ruby/object:Gem::Version
|
238
|
+
version: '0'
|
239
|
+
- !ruby/object:Gem::Dependency
|
240
|
+
name: webmock
|
241
|
+
requirement: !ruby/object:Gem::Requirement
|
242
|
+
none: false
|
243
|
+
requirements:
|
244
|
+
- - ! '>='
|
245
|
+
- !ruby/object:Gem::Version
|
246
|
+
version: '0'
|
247
|
+
type: :development
|
248
|
+
prerelease: false
|
249
|
+
version_requirements: !ruby/object:Gem::Requirement
|
250
|
+
none: false
|
251
|
+
requirements:
|
252
|
+
- - ! '>='
|
253
|
+
- !ruby/object:Gem::Version
|
254
|
+
version: '0'
|
255
|
+
description: An OmniAuth strategy for use with Stormpath
|
256
|
+
email:
|
257
|
+
- boram@carbonfive.com
|
258
|
+
- erin@carbonfive.com
|
259
|
+
executables: []
|
260
|
+
extensions: []
|
261
|
+
extra_rdoc_files: []
|
262
|
+
files:
|
263
|
+
- lib/omniauth/strategies/stormpath.rb
|
264
|
+
- lib/stormpath-omniauth/version.rb
|
265
|
+
- lib/stormpath-omniauth.rb
|
266
|
+
- Rakefile
|
267
|
+
- README.md
|
268
|
+
homepage: https://github.com/stormpath/stormpath-omniauth
|
269
|
+
licenses: []
|
270
|
+
post_install_message:
|
271
|
+
rdoc_options: []
|
272
|
+
require_paths:
|
273
|
+
- lib
|
274
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
275
|
+
none: false
|
276
|
+
requirements:
|
277
|
+
- - ! '>='
|
278
|
+
- !ruby/object:Gem::Version
|
279
|
+
version: '0'
|
280
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
281
|
+
none: false
|
282
|
+
requirements:
|
283
|
+
- - ! '>'
|
284
|
+
- !ruby/object:Gem::Version
|
285
|
+
version: 1.3.1
|
286
|
+
requirements: []
|
287
|
+
rubyforge_project:
|
288
|
+
rubygems_version: 1.8.25
|
289
|
+
signing_key:
|
290
|
+
specification_version: 3
|
291
|
+
summary: An OmniAuth strategy for use with Stormpath
|
292
|
+
test_files: []
|