ruby-openid 2.1.2 → 2.1.4
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of ruby-openid might be problematic. Click here for more details.
- data/CHANGELOG +8 -75
- data/lib/openid.rb +1 -1
- data/lib/openid/consumer.rb +2 -1
- data/lib/openid/consumer/discovery.rb +8 -0
- data/lib/openid/fetchers.rb +0 -1
- data/lib/openid/server.rb +4 -4
- data/lib/openid/yadis/parsehtml.rb +2 -1
- data/test/data/test_discover/malformed_meta_tag.html +19 -0
- data/test/test_discover.rb +49 -0
- data/test/test_idres.rb +6 -4
- data/test/test_server.rb +6 -2
- metadata +3 -2
data/CHANGELOG
CHANGED
@@ -1,78 +1,11 @@
|
|
1
|
-
Fri
|
2
|
-
tagged 2.1.
|
1
|
+
Fri Dec 19 11:50:10 PST 2008 cygnus@janrain.com
|
2
|
+
tagged 2.1.4
|
3
3
|
|
4
|
-
Fri
|
5
|
-
*
|
4
|
+
Fri Dec 19 11:48:25 PST 2008 cygnus@janrain.com
|
5
|
+
* Version: 2.1.4
|
6
6
|
|
7
|
-
Fri
|
8
|
-
*
|
9
|
-
|
10
|
-
From the Ruby FAQ:
|
11
|
-
|
12
|
-
9.2 How do random number seeds work?
|
13
|
-
|
14
|
-
It depends. In Ruby versions prior to 1.5.2, the random number generator had
|
15
|
-
(by default) a constant seed, and so would produce the same series of numbers
|
16
|
-
each time a program was run. If you needed less deterministic behaviors, you
|
17
|
-
called srand to set up a less predictable seed.
|
18
|
-
|
19
|
-
Newer Rubys (Rubies?) have a different behavior. If rand is called without a
|
20
|
-
prior call to srand, Ruby will generate its own random(ish) seed. Successive
|
21
|
-
runs of a program that does not use srand will generate different sequences of
|
22
|
-
random numbers. To get the old, predictable, behavior (perhaps for testing),
|
23
|
-
call srand with a constant seed.
|
7
|
+
Fri Dec 19 11:42:47 PST 2008 cygnus@janrain.com
|
8
|
+
* Normalize XRIs when doing discovery in accordance with the OpenID 2 spec
|
24
9
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
Fri Jun 27 13:32:09 PDT 2008 Kevin Turner <kevin@janrain.com>
|
29
|
-
* Yadis.html_yadis_location: catch HTMLTokenizerError
|
30
|
-
|
31
|
-
Fri Jun 27 13:24:13 PDT 2008 Kevin Turner <kevin@janrain.com>
|
32
|
-
* htmltokenizer: define HTMLTokenizerError to raise
|
33
|
-
|
34
|
-
Fri Jun 27 13:18:38 PDT 2008 Kevin Turner <kevin@janrain.com>
|
35
|
-
* htmltokenizer: Don't raise OpenIDError from htmltokenizer (it's not in the OpenID module namespace) #255
|
36
|
-
|
37
|
-
Wed Jun 25 17:31:26 PDT 2008 Kevin Turner <kevin@janrain.com>
|
38
|
-
* OpenID::Server::CheckIDRequest.answer: document return type
|
39
|
-
|
40
|
-
Wed Jun 25 17:06:35 PDT 2008 Kevin Turner <kevin@janrain.com>
|
41
|
-
* TrustRoot.check_sanity: don't fail if the trust root is not parseable
|
42
|
-
|
43
|
-
Wed Jun 25 16:31:30 PDT 2008 Kevin Turner <kevin@janrain.com>
|
44
|
-
* Message.from_http_response: accept 206 code
|
45
|
-
|
46
|
-
Wed Jun 25 14:14:05 PDT 2008 Kevin Turner <kevin@janrain.com>
|
47
|
-
* move OpenID::VERSION definition in openid.rb, for #256
|
48
|
-
|
49
|
-
Wed Jun 25 13:55:18 PDT 2008 Kevin Turner <kevin@janrain.com>
|
50
|
-
* Add admin/gettlds.py to ease updating of TLD list in trust root validation
|
51
|
-
|
52
|
-
Wed Jun 25 13:50:22 PDT 2008 Kevin Turner <kevin@janrain.com>
|
53
|
-
* TrustRoot.TOP_LEVEL_DOMAINS: updated
|
54
|
-
|
55
|
-
Fri Jun 13 14:18:04 PDT 2008 Kevin Turner <kevin@janrain.com>
|
56
|
-
* xrds.rb: fix stray colon
|
57
|
-
|
58
|
-
Fri Jun 13 13:41:58 PDT 2008 Kevin Turner <kevin@janrain.com>
|
59
|
-
* Yadis::get_canonical_id: case-insensitive comparison
|
60
|
-
|
61
|
-
Porting a patch from =wil:
|
62
|
-
|
63
|
-
1. There should only be a single CanonicalID in each XRD (in the latest XRI
|
64
|
-
resolution spec), so I made it use the first CID found instead of the last.
|
65
|
-
|
66
|
-
2. Use case-insensitive comparison when comparing CanonicalIDs.
|
67
|
-
|
68
|
-
Wed Jun 11 15:24:12 PDT 2008 Kevin Turner <kevin@janrain.com>
|
69
|
-
* Accept response code 206 from fetcher results. Fixes #260
|
70
|
-
|
71
|
-
Wed Jun 11 11:27:25 PDT 2008 cygnus@janrain.com
|
72
|
-
* admin/fixperms: Fix stale entries
|
73
|
-
|
74
|
-
Wed Jun 11 11:08:11 PDT 2008 cygnus@janrain.com
|
75
|
-
* Add test cases for trust roots with non-ASCII characters in path or hostname
|
76
|
-
|
77
|
-
Fri Jun 6 15:50:12 PDT 2008 cygnus@janrain.com
|
78
|
-
tagged 2.1.1
|
10
|
+
Tue Dec 16 13:14:07 PST 2008 cygnus@janrain.com
|
11
|
+
tagged 2.1.3
|
data/lib/openid.rb
CHANGED
data/lib/openid/consumer.rb
CHANGED
@@ -369,7 +369,8 @@ module OpenID
|
|
369
369
|
if message.is_openid1
|
370
370
|
return complete_invalid(message, nil)
|
371
371
|
else
|
372
|
-
|
372
|
+
setup_url = message.get_arg(OPENID2_NS, 'user_setup_url')
|
373
|
+
return SetupNeededResponse.new(last_requested_endpoint, setup_url)
|
373
374
|
end
|
374
375
|
end
|
375
376
|
|
@@ -288,6 +288,13 @@ module OpenID
|
|
288
288
|
return local_id
|
289
289
|
end
|
290
290
|
|
291
|
+
def self.normalize_xri(xri)
|
292
|
+
# Normalize an XRI, stripping its scheme if present
|
293
|
+
m = /^xri:\/\/(.*)/.match(xri)
|
294
|
+
xri = m[1] if m
|
295
|
+
return xri
|
296
|
+
end
|
297
|
+
|
291
298
|
def self.normalize_url(url)
|
292
299
|
# Normalize a URL, converting normalization failures to
|
293
300
|
# DiscoveryFailure
|
@@ -411,6 +418,7 @@ module OpenID
|
|
411
418
|
|
412
419
|
def self.discover_xri(iname)
|
413
420
|
endpoints = []
|
421
|
+
iname = self.normalize_xri(iname)
|
414
422
|
|
415
423
|
begin
|
416
424
|
canonical_id, services = Yadis::XRI::ProxyResolver.new().query(
|
data/lib/openid/fetchers.rb
CHANGED
data/lib/openid/server.rb
CHANGED
@@ -445,12 +445,12 @@ module OpenID
|
|
445
445
|
# Raises #MalformedReturnURL when the +return_to+ URL is not
|
446
446
|
# a URL.
|
447
447
|
def initialize(identity, return_to, op_endpoint, trust_root=nil,
|
448
|
-
immediate=false, assoc_handle=nil)
|
448
|
+
immediate=false, assoc_handle=nil, claimed_id=nil)
|
449
449
|
@assoc_handle = assoc_handle
|
450
450
|
@identity = identity
|
451
|
-
@claimed_id = identity
|
451
|
+
@claimed_id = (claimed_id or identity)
|
452
452
|
@return_to = return_to
|
453
|
-
@trust_root = trust_root or return_to
|
453
|
+
@trust_root = (trust_root or return_to)
|
454
454
|
@op_endpoint = op_endpoint
|
455
455
|
@message = nil
|
456
456
|
|
@@ -756,7 +756,7 @@ module OpenID
|
|
756
756
|
# immediate=false.
|
757
757
|
setup_request = self.class.new(@identity, @return_to,
|
758
758
|
@op_endpoint, @trust_root, false,
|
759
|
-
@assoc_handle)
|
759
|
+
@assoc_handle, @claimed_id)
|
760
760
|
setup_request.message = Message.new(@message.get_openid_namespace)
|
761
761
|
setup_url = setup_request.encode_to_url(server_url)
|
762
762
|
response.fields.set_arg(OPENID_NS, 'user_setup_url', setup_url)
|
@@ -32,7 +32,8 @@ module OpenID
|
|
32
32
|
return nil if el.tag_name == 'html'
|
33
33
|
|
34
34
|
if el.tag_name == 'meta' and (equiv = el.attr_hash['http-equiv'])
|
35
|
-
if ['x-xrds-location','x-yadis-location'].member?(equiv.downcase)
|
35
|
+
if ['x-xrds-location','x-yadis-location'].member?(equiv.downcase) &&
|
36
|
+
el.attr_hash.member?('content')
|
36
37
|
return CGI::unescapeHTML(el.attr_hash['content'])
|
37
38
|
end
|
38
39
|
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
<html>
|
2
|
+
<head>
|
3
|
+
<title />
|
4
|
+
|
5
|
+
<link rel="openid.server"
|
6
|
+
href="http://www.myopenid.com/server" />
|
7
|
+
<link rel="openid.delegate"
|
8
|
+
href="http://user.myopenid.com/" />
|
9
|
+
<link rel="openid2.local_id"
|
10
|
+
href="http://user.myopenid.com/" />
|
11
|
+
<link rel="openid2.provider"
|
12
|
+
href="http://www.myopenid.com/server" />
|
13
|
+
<meta http-equiv="X-XRDS-Location"
|
14
|
+
http://www.myopenid.com/xrds?username=user.myopenid.com" />
|
15
|
+
|
16
|
+
</head>
|
17
|
+
<body>
|
18
|
+
</body>
|
19
|
+
</html>
|
data/test/test_discover.rb
CHANGED
@@ -273,6 +273,33 @@ module OpenID
|
|
273
273
|
false)
|
274
274
|
end
|
275
275
|
|
276
|
+
def test_malformed_meta_tag
|
277
|
+
@id_url = "http://user.myopenid.com/"
|
278
|
+
|
279
|
+
services = _discover(
|
280
|
+
'text/html',
|
281
|
+
read_data_file('test_discover/malformed_meta_tag.html', false),
|
282
|
+
2)
|
283
|
+
|
284
|
+
_checkService(
|
285
|
+
services[0],
|
286
|
+
"http://www.myopenid.com/server",
|
287
|
+
@id_url,
|
288
|
+
@id_url,
|
289
|
+
nil,
|
290
|
+
['2.0'],
|
291
|
+
false)
|
292
|
+
|
293
|
+
_checkService(
|
294
|
+
services[1],
|
295
|
+
"http://www.myopenid.com/server",
|
296
|
+
@id_url,
|
297
|
+
@id_url,
|
298
|
+
nil,
|
299
|
+
['1.1'],
|
300
|
+
false)
|
301
|
+
end
|
302
|
+
|
276
303
|
def test_html1
|
277
304
|
services = _discover('text/html',
|
278
305
|
read_data_file('test_discover/openid.html', false),
|
@@ -544,6 +571,28 @@ module OpenID
|
|
544
571
|
'=smoker')
|
545
572
|
end
|
546
573
|
|
574
|
+
def test_xri_normalize
|
575
|
+
user_xri, services = OpenID.discover_xri('xri://=smoker')
|
576
|
+
|
577
|
+
_checkService(services[0],
|
578
|
+
"http://www.myopenid.com/server",
|
579
|
+
Yadis::XRI.make_xri("=!1000"),
|
580
|
+
'http://smoker.myopenid.com/',
|
581
|
+
Yadis::XRI.make_xri("=!1000"),
|
582
|
+
['1.0'],
|
583
|
+
true,
|
584
|
+
'=smoker')
|
585
|
+
|
586
|
+
_checkService(services[1],
|
587
|
+
"http://www.livejournal.com/openid/server.bml",
|
588
|
+
Yadis::XRI.make_xri("=!1000"),
|
589
|
+
'http://frank.livejournal.com/',
|
590
|
+
Yadis::XRI.make_xri("=!1000"),
|
591
|
+
['1.0'],
|
592
|
+
true,
|
593
|
+
'=smoker')
|
594
|
+
end
|
595
|
+
|
547
596
|
def test_xriNoCanonicalID
|
548
597
|
silence_logging {
|
549
598
|
user_xri, services = OpenID.discover_xri('=smoker*bad')
|
data/test/test_idres.rb
CHANGED
@@ -605,7 +605,9 @@ module OpenID
|
|
605
605
|
expected_endpoint.local_id = nil
|
606
606
|
expected_endpoint.claimed_id = claimed_id
|
607
607
|
|
608
|
-
hacked_discover = Proc.new {
|
608
|
+
hacked_discover = Proc.new {
|
609
|
+
|_claimed_id| ['unused', [expected_endpoint]]
|
610
|
+
}
|
609
611
|
idres = IdResHandler.new(resp_mesg, nil, nil, @endpoint)
|
610
612
|
assert_log_matches('Performing discovery') {
|
611
613
|
OpenID.with_method_overridden(:discover, hacked_discover) {
|
@@ -661,7 +663,7 @@ module OpenID
|
|
661
663
|
'identity' => 'sour grapes',
|
662
664
|
'claimed_id' => 'monkeysoft',
|
663
665
|
'op_endpoint' => 'Phone Home'}) do |idres|
|
664
|
-
idres.instance_def(:discover_and_verify) do
|
666
|
+
idres.instance_def(:discover_and_verify) do |claimed_id, endpoints|
|
665
667
|
@endpoint = endpoint
|
666
668
|
end
|
667
669
|
end
|
@@ -684,7 +686,7 @@ module OpenID
|
|
684
686
|
'claimed_id' => 'monkeysoft',
|
685
687
|
'op_endpoint' => 'Green Cheese'}) do |idres|
|
686
688
|
idres.extend(InstanceDefExtension)
|
687
|
-
idres.instance_def(:discover_and_verify) do
|
689
|
+
idres.instance_def(:discover_and_verify) do |claimed_id, endpoints|
|
688
690
|
@endpoint = endpoint
|
689
691
|
end
|
690
692
|
end
|
@@ -768,7 +770,7 @@ module OpenID
|
|
768
770
|
assert_raises(verified_error) {
|
769
771
|
call_verify_modify({'ns' => OPENID1_NS,
|
770
772
|
'identity' => @endpoint.local_id}) { |idres|
|
771
|
-
idres.instance_def(:discover_and_verify) do
|
773
|
+
idres.instance_def(:discover_and_verify) do |claimed_id, endpoints|
|
772
774
|
raise verified_error
|
773
775
|
end
|
774
776
|
}
|
data/test/test_server.rb
CHANGED
@@ -1421,6 +1421,7 @@ module OpenID
|
|
1421
1421
|
@request.message = Message.new(OPENID1_NS)
|
1422
1422
|
@request.mode = 'checkid_immediate'
|
1423
1423
|
@request.immediate = true
|
1424
|
+
@request.claimed_id = 'http://claimed-id.test/'
|
1424
1425
|
server_url = "http://setup-url.unittest/"
|
1425
1426
|
# crappiting setup_url, you dirty my interface with your presence!
|
1426
1427
|
answer = @request.answer(false, server_url)
|
@@ -1428,8 +1429,11 @@ module OpenID
|
|
1428
1429
|
assert_equal(2, answer.fields.to_post_args.length, answer.fields)
|
1429
1430
|
assert_equal(OPENID1_NS, answer.fields.get_openid_namespace)
|
1430
1431
|
assert_equal('id_res', answer.fields.get_arg(OPENID_NS, 'mode'))
|
1431
|
-
|
1432
|
-
|
1432
|
+
|
1433
|
+
usu = answer.fields.get_arg(OPENID_NS, 'user_setup_url', '')
|
1434
|
+
assert(usu.starts_with?(server_url))
|
1435
|
+
expected_substr = 'openid.claimed_id=http%3A%2F%2Fclaimed-id.test%2F'
|
1436
|
+
assert(!usu.index(expected_substr).nil?, usu)
|
1433
1437
|
end
|
1434
1438
|
|
1435
1439
|
def test_answerSetupDeny
|
metadata
CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.0
|
|
3
3
|
specification_version: 1
|
4
4
|
name: ruby-openid
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 2.1.
|
7
|
-
date: 2008-
|
6
|
+
version: 2.1.4
|
7
|
+
date: 2008-12-19 00:00:00 -08:00
|
8
8
|
summary: A library for consuming and serving OpenID identities.
|
9
9
|
require_paths:
|
10
10
|
- lib
|
@@ -256,6 +256,7 @@ files:
|
|
256
256
|
- test/data/test_discover/yadis_idp.xml
|
257
257
|
- test/data/test_discover/yadis_idp_delegate.xml
|
258
258
|
- test/data/test_discover/yadis_no_delegate.xml
|
259
|
+
- test/data/test_discover/malformed_meta_tag.html
|
259
260
|
- NOTICE
|
260
261
|
- CHANGELOG
|
261
262
|
- README
|