From e49e6176ab1ecaf9e6cf140112d628e934fe63ee Mon Sep 17 00:00:00 2001 From: Chuck Hagenbuch Date: Wed, 5 Jan 2011 09:54:58 -0500 Subject: [PATCH] Normalize URL and HTTP method, WS --- framework/Oauth/lib/Horde/Oauth/Consumer.php | 1 - framework/Oauth/lib/Horde/Oauth/Request.php | 35 ++++++++++++++++++++-- .../Oauth/lib/Horde/Oauth/SignatureMethod/Base.php | 1 - .../lib/Horde/Oauth/SignatureMethod/HmacSha1.php | 1 - .../lib/Horde/Oauth/SignatureMethod/Plaintext.php | 1 - .../lib/Horde/Oauth/SignatureMethod/RsaSha1.php | 1 - framework/Oauth/lib/Horde/Oauth/Token.php | 1 - 7 files changed, 32 insertions(+), 9 deletions(-) diff --git a/framework/Oauth/lib/Horde/Oauth/Consumer.php b/framework/Oauth/lib/Horde/Oauth/Consumer.php index 044d8a1cc..9b75cf430 100644 --- a/framework/Oauth/lib/Horde/Oauth/Consumer.php +++ b/framework/Oauth/lib/Horde/Oauth/Consumer.php @@ -123,5 +123,4 @@ class Horde_Oauth_Consumer return Horde_Oauth_Token::fromString($response->getBody()); } - } diff --git a/framework/Oauth/lib/Horde/Oauth/Request.php b/framework/Oauth/lib/Horde/Oauth/Request.php index 074aa0ccf..0de8e6768 100644 --- a/framework/Oauth/lib/Horde/Oauth/Request.php +++ b/framework/Oauth/lib/Horde/Oauth/Request.php @@ -62,7 +62,7 @@ class Horde_Oauth_Request $this->_params['oauth_signature_method'] = $signatureMethod->getName(); $this->_params['oauth_signature'] = $signatureMethod->sign($this, $consumer, $token); - return $this->_url . '?' . $this->buildHttpQuery(); + return $this->_getNormalizedUrl() . '?' . $this->buildHttpQuery(); } /** @@ -74,8 +74,8 @@ class Horde_Oauth_Request public function getSignatureBaseString() { $parts = array( - $this->_method, - $this->_url, + $this->_getNormalizedHttpMethod(), + $this->_getNormalizedUrl(), $this->_getSignableParameters() ); @@ -94,6 +94,8 @@ class Horde_Oauth_Request return implode('&', $parts); } + /** + */ public function buildAuthorizationHeader($realm = '') { $header = ''; @@ -166,4 +168,31 @@ class Horde_Oauth_Request return implode('&', $pairs); } + /** + * Uppercases the HTTP method + */ + protected function _getNormalizedHttpMethod() + { + return strtoupper($this->_method); + } + + /** + * Parse the url and rebuilds it to be scheme://host/path + */ + protected function _getNormalizedUrl() + { + $parts = parse_url($this->_url); + + $port = !empty($parts['port']) ? $parts['port'] : '80'; + $scheme = $parts['scheme']; + $host = $parts['host']; + $path = !empty($parts['path']) ? $parts['path'] : ''; + + if (($scheme == 'https' && $port != '443') || + ($scheme == 'http' && $port != '80')) { + $host = "$host:$port"; + } + + return "$scheme://$host$path"; + } } diff --git a/framework/Oauth/lib/Horde/Oauth/SignatureMethod/Base.php b/framework/Oauth/lib/Horde/Oauth/SignatureMethod/Base.php index a9ab4198e..4cd16cdd6 100644 --- a/framework/Oauth/lib/Horde/Oauth/SignatureMethod/Base.php +++ b/framework/Oauth/lib/Horde/Oauth/SignatureMethod/Base.php @@ -26,5 +26,4 @@ abstract class Horde_Oauth_SignatureMethod_Base { return $signature == $this->sign($request, $consumer, $token); } - } diff --git a/framework/Oauth/lib/Horde/Oauth/SignatureMethod/HmacSha1.php b/framework/Oauth/lib/Horde/Oauth/SignatureMethod/HmacSha1.php index 668bec35d..d3fb9a7fe 100644 --- a/framework/Oauth/lib/Horde/Oauth/SignatureMethod/HmacSha1.php +++ b/framework/Oauth/lib/Horde/Oauth/SignatureMethod/HmacSha1.php @@ -37,5 +37,4 @@ class Horde_Oauth_SignatureMethod_HmacSha1 extends Horde_Oauth_SignatureMethod_B return base64_encode(hash_hmac('sha1', $baseString, $key, true)); } - } diff --git a/framework/Oauth/lib/Horde/Oauth/SignatureMethod/Plaintext.php b/framework/Oauth/lib/Horde/Oauth/SignatureMethod/Plaintext.php index 1148e3c77..4e9fd8a3d 100644 --- a/framework/Oauth/lib/Horde/Oauth/SignatureMethod/Plaintext.php +++ b/framework/Oauth/lib/Horde/Oauth/SignatureMethod/Plaintext.php @@ -37,5 +37,4 @@ class Horde_Oauth_SignatureMethod_Plaintext extends Horde_Oauth_SignatureMethod_ return Horde_Oauth_Utils::urlencodeRfc3986(implode('&', $signature)); } - } diff --git a/framework/Oauth/lib/Horde/Oauth/SignatureMethod/RsaSha1.php b/framework/Oauth/lib/Horde/Oauth/SignatureMethod/RsaSha1.php index 5aef78d8a..c118de731 100644 --- a/framework/Oauth/lib/Horde/Oauth/SignatureMethod/RsaSha1.php +++ b/framework/Oauth/lib/Horde/Oauth/SignatureMethod/RsaSha1.php @@ -51,5 +51,4 @@ class Horde_Oauth_SignatureMethod_RsaSha1 extends Horde_Oauth_SignatureMethod_Ba return $result == 1; } - } diff --git a/framework/Oauth/lib/Horde/Oauth/Token.php b/framework/Oauth/lib/Horde/Oauth/Token.php index 8ab166142..8936cd6a4 100644 --- a/framework/Oauth/lib/Horde/Oauth/Token.php +++ b/framework/Oauth/lib/Horde/Oauth/Token.php @@ -47,5 +47,4 @@ class Horde_Oauth_Token parse_str($string, $parts); return new self($parts['oauth_token'], $parts['oauth_token_secret']); } - } -- 2.11.0