rack-openid 1.3.1 → 1.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/lib/rack/openid/version.rb +5 -0
- data/lib/rack/openid.rb +22 -7
- metadata +50 -76
- data/LICENSE +0 -20
- data/README.rdoc +0 -70
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: ffa1c0c3b3e9d62ad033405c449ca5bbe6289734
|
4
|
+
data.tar.gz: fa39ead3431fa078dba08042948b0b45bd681a46
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: ffdb2ac397a554858029744ac48855745fccffdb4b49c410255a8f857e3a92fe97ebb2e43a95c73d752189cf2c3d41e63ec98884aba7ae9fecdec60104ba077a
|
7
|
+
data.tar.gz: 72a9a6834c6584cc39b592aab031023324ca3cfe7122f5ed5ba09605847b7805c57057a7e2bcebb9a11a43223c81684f91eaba063ed48e2b5fd9f3ebd038b48f
|
data/lib/rack/openid.rb
CHANGED
@@ -117,14 +117,14 @@ module Rack #:nodoc:
|
|
117
117
|
|
118
118
|
consumer = ::OpenID::Consumer.new(session, @store)
|
119
119
|
identifier = params['identifier'] || params['identity']
|
120
|
-
immediate = params['immediate'] == 'true'
|
121
120
|
|
122
121
|
begin
|
123
122
|
oidreq = consumer.begin(identifier)
|
124
123
|
add_simple_registration_fields(oidreq, params)
|
125
124
|
add_attribute_exchange_fields(oidreq, params)
|
126
125
|
add_oauth_fields(oidreq, params)
|
127
|
-
|
126
|
+
|
127
|
+
url = open_id_redirect_url(req, oidreq, params)
|
128
128
|
return redirect_to(url)
|
129
129
|
rescue ::OpenID::OpenIDError, Timeout::Error => e
|
130
130
|
env[RESPONSE] = MissingResponse.new
|
@@ -181,9 +181,9 @@ module Rack #:nodoc:
|
|
181
181
|
env["REQUEST_URI"] = request_uri
|
182
182
|
end
|
183
183
|
|
184
|
-
def
|
184
|
+
def scheme_with_host_and_port(req, host = nil)
|
185
185
|
url = req.scheme + "://"
|
186
|
-
url << req.host
|
186
|
+
url << (host || req.host)
|
187
187
|
|
188
188
|
scheme, port = req.scheme, req.port
|
189
189
|
if scheme == "https" && port != 443 ||
|
@@ -194,8 +194,17 @@ module Rack #:nodoc:
|
|
194
194
|
url
|
195
195
|
end
|
196
196
|
|
197
|
+
def realm(req, domain = nil)
|
198
|
+
if domain
|
199
|
+
scheme_with_host_and_port(req, domain)
|
200
|
+
else
|
201
|
+
scheme_with_host_and_port(req)
|
202
|
+
end
|
203
|
+
|
204
|
+
end
|
205
|
+
|
197
206
|
def request_url(req)
|
198
|
-
url =
|
207
|
+
url = scheme_with_host_and_port(req)
|
199
208
|
url << req.script_name
|
200
209
|
url << req.path_info
|
201
210
|
url << "?#{req.query_string}" if req.query_string.to_s.length > 0
|
@@ -206,7 +215,13 @@ module Rack #:nodoc:
|
|
206
215
|
[303, {"Content-Type" => "text/html", "Location" => url}, []]
|
207
216
|
end
|
208
217
|
|
209
|
-
def open_id_redirect_url(req, oidreq,
|
218
|
+
def open_id_redirect_url(req, oidreq, options)
|
219
|
+
trust_root = options["trust_root"]
|
220
|
+
return_to = options["return_to"]
|
221
|
+
method = options["method"]
|
222
|
+
immediate = options["immediate"] == "true"
|
223
|
+
|
224
|
+
realm = realm(req, options["realm_domain"])
|
210
225
|
request_url = request_url(req)
|
211
226
|
|
212
227
|
if return_to
|
@@ -218,7 +233,7 @@ module Rack #:nodoc:
|
|
218
233
|
|
219
234
|
method = method.to_s.downcase
|
220
235
|
oidreq.return_to_args['_method'] = method unless method == "get"
|
221
|
-
oidreq.redirect_url(trust_root ||
|
236
|
+
oidreq.redirect_url(trust_root || realm, return_to || request_url, immediate)
|
222
237
|
end
|
223
238
|
|
224
239
|
def add_simple_registration_fields(oidreq, fields)
|
metadata
CHANGED
@@ -1,101 +1,75 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: rack-openid
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
prerelease:
|
6
|
-
segments:
|
7
|
-
- 1
|
8
|
-
- 3
|
9
|
-
- 1
|
10
|
-
version: 1.3.1
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.4.0
|
11
5
|
platform: ruby
|
12
|
-
authors:
|
6
|
+
authors:
|
7
|
+
- Michael Grosser
|
13
8
|
- Joshua Peek
|
14
9
|
autorequire:
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
dependencies:
|
21
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2013-10-11 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
22
15
|
name: rack
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
- - ">="
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
hash: 19
|
30
|
-
segments:
|
31
|
-
- 1
|
32
|
-
- 1
|
33
|
-
- 0
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
requirements:
|
18
|
+
- - '>='
|
19
|
+
- !ruby/object:Gem::Version
|
34
20
|
version: 1.1.0
|
35
21
|
type: :runtime
|
36
|
-
version_requirements: *id001
|
37
|
-
- !ruby/object:Gem::Dependency
|
38
|
-
name: ruby-openid
|
39
22
|
prerelease: false
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
23
|
+
version_requirements: !ruby/object:Gem::Requirement
|
24
|
+
requirements:
|
25
|
+
- - '>='
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
version: 1.1.0
|
28
|
+
- !ruby/object:Gem::Dependency
|
29
|
+
name: ruby-openid
|
30
|
+
requirement: !ruby/object:Gem::Requirement
|
31
|
+
requirements:
|
32
|
+
- - '>='
|
33
|
+
- !ruby/object:Gem::Version
|
50
34
|
version: 2.1.8
|
51
35
|
type: :runtime
|
52
|
-
|
53
|
-
|
54
|
-
|
36
|
+
prerelease: false
|
37
|
+
version_requirements: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - '>='
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: 2.1.8
|
42
|
+
description:
|
43
|
+
email: michael@grosser.it
|
55
44
|
executables: []
|
56
|
-
|
57
45
|
extensions: []
|
58
|
-
|
59
46
|
extra_rdoc_files: []
|
60
|
-
|
61
|
-
files:
|
47
|
+
files:
|
62
48
|
- lib/rack/openid.rb
|
63
49
|
- lib/rack/openid/simple_auth.rb
|
64
|
-
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
50
|
+
- lib/rack/openid/version.rb
|
51
|
+
homepage: https://github.com/grosser/rack-openid
|
52
|
+
licenses:
|
53
|
+
- MIT
|
54
|
+
metadata: {}
|
70
55
|
post_install_message:
|
71
56
|
rdoc_options: []
|
72
|
-
|
73
|
-
require_paths:
|
57
|
+
require_paths:
|
74
58
|
- lib
|
75
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
none: false
|
86
|
-
requirements:
|
87
|
-
- - ">="
|
88
|
-
- !ruby/object:Gem::Version
|
89
|
-
hash: 3
|
90
|
-
segments:
|
91
|
-
- 0
|
92
|
-
version: "0"
|
59
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
60
|
+
requirements:
|
61
|
+
- - '>='
|
62
|
+
- !ruby/object:Gem::Version
|
63
|
+
version: '0'
|
64
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - '>='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
93
69
|
requirements: []
|
94
|
-
|
95
70
|
rubyforge_project:
|
96
|
-
rubygems_version:
|
71
|
+
rubygems_version: 2.0.6
|
97
72
|
signing_key:
|
98
|
-
specification_version:
|
73
|
+
specification_version: 4
|
99
74
|
summary: Provides a more HTTPish API around the ruby-openid library
|
100
75
|
test_files: []
|
101
|
-
|
data/LICENSE
DELETED
@@ -1,20 +0,0 @@
|
|
1
|
-
Copyright (c) 2010 Joshua Peek
|
2
|
-
|
3
|
-
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
-
a copy of this software and associated documentation files (the
|
5
|
-
"Software"), to deal in the Software without restriction, including
|
6
|
-
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
-
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
-
permit persons to whom the Software is furnished to do so, subject to
|
9
|
-
the following conditions:
|
10
|
-
|
11
|
-
The above copyright notice and this permission notice shall be
|
12
|
-
included in all copies or substantial portions of the Software.
|
13
|
-
|
14
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
-
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
-
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
-
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
-
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
-
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
-
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.rdoc
DELETED
@@ -1,70 +0,0 @@
|
|
1
|
-
= Rack::OpenID
|
2
|
-
|
3
|
-
Provides a more HTTPish API around the ruby-openid library.
|
4
|
-
|
5
|
-
=== Usage
|
6
|
-
|
7
|
-
You trigger an OpenID request similar to HTTP authentication. From your app, return a "401 Unauthorized" and a "WWW-Authenticate" header with the identifier you would like to validate.
|
8
|
-
|
9
|
-
On competition, the OpenID response is automatically verified and assigned to
|
10
|
-
<tt>env["rack.openid.response"]</tt>.
|
11
|
-
|
12
|
-
=== Rack Example
|
13
|
-
|
14
|
-
MyApp = lambda { |env|
|
15
|
-
if resp = env["rack.openid.response"]
|
16
|
-
case resp.status
|
17
|
-
when :success
|
18
|
-
...
|
19
|
-
when :failure
|
20
|
-
...
|
21
|
-
else
|
22
|
-
[401, {"WWW-Authenticate" => 'OpenID identifier="http://example.com/"'}, []]
|
23
|
-
end
|
24
|
-
}
|
25
|
-
|
26
|
-
use Rack::OpenID
|
27
|
-
run MyApp
|
28
|
-
|
29
|
-
=== Sinatra Example
|
30
|
-
|
31
|
-
# Session needs to be before Rack::OpenID
|
32
|
-
use Rack::Session::Cookie
|
33
|
-
|
34
|
-
require 'rack/openid'
|
35
|
-
use Rack::OpenID
|
36
|
-
|
37
|
-
get '/login' do
|
38
|
-
erb :login
|
39
|
-
end
|
40
|
-
|
41
|
-
post '/login' do
|
42
|
-
if resp = request.env["rack.openid.response"]
|
43
|
-
if resp.status == :success
|
44
|
-
"Welcome: #{resp.display_identifier}"
|
45
|
-
else
|
46
|
-
"Error: #{resp.status}"
|
47
|
-
end
|
48
|
-
else
|
49
|
-
headers 'WWW-Authenticate' => Rack::OpenID.build_header(
|
50
|
-
:identifier => params["openid_identifier"]
|
51
|
-
)
|
52
|
-
throw :halt, [401, 'got openid?']
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
56
|
-
enable :inline_templates
|
57
|
-
|
58
|
-
__END__
|
59
|
-
|
60
|
-
@@ login
|
61
|
-
<form action="/login" method="post">
|
62
|
-
<p>
|
63
|
-
<label for="openid_identifier">OpenID:</label>
|
64
|
-
<input id="openid_identifier" name="openid_identifier" type="text" />
|
65
|
-
</p>
|
66
|
-
|
67
|
-
<p>
|
68
|
-
<input name="commit" type="submit" value="Sign in" />
|
69
|
-
</p>
|
70
|
-
</form>
|