diff options
-rw-r--r-- | Auth/OpenID/Consumer.php | 7 | ||||
-rw-r--r-- | Auth/OpenID/Message.php | 9 | ||||
-rw-r--r-- | Tests/Auth/OpenID/Consumer.php | 12 |
3 files changed, 20 insertions, 8 deletions
diff --git a/Auth/OpenID/Consumer.php b/Auth/OpenID/Consumer.php index a4b7a59..af52137 100644 --- a/Auth/OpenID/Consumer.php +++ b/Auth/OpenID/Consumer.php @@ -1322,13 +1322,12 @@ class Auth_OpenID_GenericConsumer { continue; } - if (!$message->hasKey(Auth_OpenID_OPENID_NS, - $k)) { + $value = $message->getAliasedArg($k); + if ($value === null) { return null; } - $val = $message->getAliasedArg($k); - $check_args[$k] = $val; + $check_args[$k] = $value; } } diff --git a/Auth/OpenID/Message.php b/Auth/OpenID/Message.php index 6bfc5f8..8a02ab2 100644 --- a/Auth/OpenID/Message.php +++ b/Auth/OpenID/Message.php @@ -873,7 +873,14 @@ class Auth_OpenID_Message { $ns = null; } else { list($alias, $key) = $parts; - $ns = $this->namespaces->getNamespaceURI($alias); + + if ($alias == 'ns') { + // Return the namespace URI for a namespace alias + // parameter. + return $this->namespaces->getNamespaceURI($key); + } else { + $ns = $this->namespaces->getNamespaceURI($alias); + } } if ($ns === null) { diff --git a/Tests/Auth/OpenID/Consumer.php b/Tests/Auth/OpenID/Consumer.php index 8b676ee..a21b3ea 100644 --- a/Tests/Auth/OpenID/Consumer.php +++ b/Tests/Auth/OpenID/Consumer.php @@ -1391,18 +1391,23 @@ class Tests_Auth_OpenID_Consumer_TestCheckAuth extends _TestIdRes { { $query = Auth_OpenID_Message::fromOpenIDArgs(array( 'mode'=> 'id_res', + 'ns' => Auth_OpenID_OPENID2_NS, 'sig'=> 'rabbits', 'identity'=> '=example', 'assoc_handle'=> 'munchkins', - 'signed'=> 'identity,mode', + 'ns.sreg' => 'urn:sreg', + 'sreg.email' => 'bogus@example.com', + 'signed'=> 'identity,mode,ns.sreg,sreg.email', 'foo'=> 'bar')); $expected = Auth_OpenID_Message::fromOpenIDArgs(array( 'mode'=> 'check_authentication', 'sig'=> 'rabbits', 'assoc_handle'=> 'munchkins', + 'ns.sreg' => 'urn:sreg', + 'sreg.email' => 'bogus@example.com', 'identity'=> '=example', - 'signed'=> 'identity,mode' + 'signed'=> 'identity,mode,ns.sreg,sreg.email' )); $args = $this->consumer->_createCheckAuthRequest($query); @@ -1524,7 +1529,8 @@ class Tests_Auth_OpenID_SuccessResponse extends PHPUnit_TestCase { $signed_list = array('openid.sreg.nickname', 'openid.unittest.one', - 'openid.sreg.dob'); + 'openid.sreg.dob', + 'openid.ns.sreg'); $msg = Auth_OpenID_Message::fromOpenIDArgs($args); $resp = new Auth_OpenID_SuccessResponse($this->endpoint, $msg, $signed_list); |