From 6c8c03142db734678d460ee085a73df1d05a88a1 Mon Sep 17 00:00:00 2001 From: brettp Date: Tue, 15 Mar 2011 03:46:37 +0000 Subject: Refs #3115. Moved oauth_lib to oauth_api. git-svn-id: http://code.elgg.org/elgg/trunk@8715 36083f99-b078-4883-b0ff-0f9b5a30f544 --- mod/oauth_api/vendors/oauth/example/server/INSTALL | 53 +++++++++ .../vendors/oauth/example/server/core/init.php | 127 +++++++++++++++++++++ .../example/server/core/templates/inc/footer.tpl | 2 + .../example/server/core/templates/inc/header.tpl | 2 + .../oauth/example/server/core/templates/index.tpl | 13 +++ .../oauth/example/server/core/templates/logon.tpl | 21 ++++ .../example/server/core/templates/register.tpl | 41 +++++++ .../vendors/oauth/example/server/www/hello.php | 65 +++++++++++ .../vendors/oauth/example/server/www/index.php | 37 ++++++ .../vendors/oauth/example/server/www/logon.php | 55 +++++++++ .../vendors/oauth/example/server/www/oauth.php | 77 +++++++++++++ .../vendors/oauth/example/server/www/register.php | 28 +++++ .../oauth/example/server/www/services.xrds.php | 71 ++++++++++++ 13 files changed, 592 insertions(+) create mode 100644 mod/oauth_api/vendors/oauth/example/server/INSTALL create mode 100644 mod/oauth_api/vendors/oauth/example/server/core/init.php create mode 100644 mod/oauth_api/vendors/oauth/example/server/core/templates/inc/footer.tpl create mode 100644 mod/oauth_api/vendors/oauth/example/server/core/templates/inc/header.tpl create mode 100644 mod/oauth_api/vendors/oauth/example/server/core/templates/index.tpl create mode 100644 mod/oauth_api/vendors/oauth/example/server/core/templates/logon.tpl create mode 100644 mod/oauth_api/vendors/oauth/example/server/core/templates/register.tpl create mode 100644 mod/oauth_api/vendors/oauth/example/server/www/hello.php create mode 100644 mod/oauth_api/vendors/oauth/example/server/www/index.php create mode 100644 mod/oauth_api/vendors/oauth/example/server/www/logon.php create mode 100644 mod/oauth_api/vendors/oauth/example/server/www/oauth.php create mode 100644 mod/oauth_api/vendors/oauth/example/server/www/register.php create mode 100644 mod/oauth_api/vendors/oauth/example/server/www/services.xrds.php (limited to 'mod/oauth_api/vendors/oauth/example/server') diff --git a/mod/oauth_api/vendors/oauth/example/server/INSTALL b/mod/oauth_api/vendors/oauth/example/server/INSTALL new file mode 100644 index 000000000..249c85e9d --- /dev/null +++ b/mod/oauth_api/vendors/oauth/example/server/INSTALL @@ -0,0 +1,53 @@ +In this example I assume that oauth-php lives in /home/john/src/oauth-php + + +1) Create a virtual host and set the DB_DSN VARIABLE to the DSN of your (mysql) database. + +Example + + ServerAdmin admin@localhost + ServerName hello.local + DocumentRoot /home/john/src/oauth-php/example/server/www + + UseCanonicalName Off + ServerSignature On + + SetEnv DB_DSN mysql://foo:bar@localhost/oauth_example_server_db + + + Options Indexes FollowSymLinks MultiViews + AllowOverride None + Order allow,deny + Allow from all + + + php_value magic_quotes_gpc 0 + php_value register_globals 0 + php_value session.auto_start 0 + + + + + + +2) Create the database structure for the server: + +# mysql -u foo -p bar -h localhost < /home/john/src/oauth-php/library/store/mysql/mysql.sql + + + +3) Download and install smarty into the smarty/core/smarty directory: + +# cd /home/john/src/oauth-php/example/server/core +# wget 'http://www.smarty.net/do_download.php?download_file=Smarty-2.6.19.tar.gz' +# tar zxf Smarty-2.6.19.tar.gz +# mv Smarty-2.6.19 smarty + + +4) That's it! Point your browser to + + http://hello.local/ + +To get started. + +Arjan Scherpenisse , July 2008 diff --git a/mod/oauth_api/vendors/oauth/example/server/core/init.php b/mod/oauth_api/vendors/oauth/example/server/core/init.php new file mode 100644 index 000000000..e5bb9de35 --- /dev/null +++ b/mod/oauth_api/vendors/oauth/example/server/core/init.php @@ -0,0 +1,127 @@ + + * + * + * The MIT License + * + * Copyright (c) 2007-2008 Mediamatic Lab + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + + +/* + * Simple 'user management' + */ +define ('USERNAME', 'sysadmin'); +define ('PASSWORD', 'sysadmin'); + + +/* + * Always announce XRDS OAuth discovery + */ +header('X-XRDS-Location: http://' . $_SERVER['SERVER_NAME'] . '/services.xrds'); + + +/* + * Initialize the database connection + */ +$info = parse_url(getenv('DB_DSN')); +($GLOBALS['db_conn'] = mysql_connect($info['host'], $info['user'], $info['pass'])) || die(mysql_error()); +mysql_select_db(basename($info['path']), $GLOBALS['db_conn']) || die(mysql_error()); +unset($info); + + +require_once '../../../library/OAuthServer.php'; + +/* + * Initialize OAuth store + */ +require_once '../../../library/OAuthStore.php'; +OAuthStore::instance('MySQL', array('conn' => $GLOBALS['db_conn'])); + + +/* + * Session + */ +session_start(); + + +/* + * Template handling + */ +require_once 'smarty/libs/Smarty.class.php'; +function session_smarty() +{ + if (!isset($GLOBALS['smarty'])) + { + $GLOBALS['smarty'] = new Smarty; + $GLOBALS['smarty']->template_dir = dirname(__FILE__) . '/templates/'; + $GLOBALS['smarty']->compile_dir = dirname(__FILE__) . '/../cache/templates_c'; + } + + return $GLOBALS['smarty']; +} + +function assert_logged_in() +{ + if (empty($_SESSION['authorized'])) + { + $uri = $_SERVER['REQUEST_URI']; + header('Location: /logon?goto=' . urlencode($uri)); + } +} + +function assert_request_vars() +{ + foreach(func_get_args() as $a) + { + if (!isset($_REQUEST[$a])) + { + header('HTTP/1.1 400 Bad Request'); + echo 'Bad request.'; + exit; + } + } +} + +function assert_request_vars_all() +{ + foreach($_REQUEST as $row) + { + foreach(func_get_args() as $a) + { + if (!isset($row[$a])) + { + header('HTTP/1.1 400 Bad Request'); + echo 'Bad request.'; + exit; + } + } + } +} + +?> \ No newline at end of file diff --git a/mod/oauth_api/vendors/oauth/example/server/core/templates/inc/footer.tpl b/mod/oauth_api/vendors/oauth/example/server/core/templates/inc/footer.tpl new file mode 100644 index 000000000..308b1d01b --- /dev/null +++ b/mod/oauth_api/vendors/oauth/example/server/core/templates/inc/footer.tpl @@ -0,0 +1,2 @@ + + diff --git a/mod/oauth_api/vendors/oauth/example/server/core/templates/inc/header.tpl b/mod/oauth_api/vendors/oauth/example/server/core/templates/inc/header.tpl new file mode 100644 index 000000000..5046f54b0 --- /dev/null +++ b/mod/oauth_api/vendors/oauth/example/server/core/templates/inc/header.tpl @@ -0,0 +1,2 @@ + + diff --git a/mod/oauth_api/vendors/oauth/example/server/core/templates/index.tpl b/mod/oauth_api/vendors/oauth/example/server/core/templates/index.tpl new file mode 100644 index 000000000..7b065537d --- /dev/null +++ b/mod/oauth_api/vendors/oauth/example/server/core/templates/index.tpl @@ -0,0 +1,13 @@ +{include file='inc/header.tpl'} + +

OAuth server

+Go to: + + + +Afterwards, make an OAuth test request to http://{$smarty.server.name}/hello to test your connection.

+ +{include file='inc/footer.tpl'} diff --git a/mod/oauth_api/vendors/oauth/example/server/core/templates/logon.tpl b/mod/oauth_api/vendors/oauth/example/server/core/templates/logon.tpl new file mode 100644 index 000000000..5ccd432b5 --- /dev/null +++ b/mod/oauth_api/vendors/oauth/example/server/core/templates/logon.tpl @@ -0,0 +1,21 @@ +{include file='inc/header.tpl'} + +

Login

+ +
+ + +
+ + +

+ +
+ + +

+ + +
+ +{include file='inc/footer.tpl'} diff --git a/mod/oauth_api/vendors/oauth/example/server/core/templates/register.tpl b/mod/oauth_api/vendors/oauth/example/server/core/templates/register.tpl new file mode 100644 index 000000000..0e28c1584 --- /dev/null +++ b/mod/oauth_api/vendors/oauth/example/server/core/templates/register.tpl @@ -0,0 +1,41 @@ +{include file='inc/header.tpl'} + +

Register server

+ +

Register a server which is gonna act as an identity client.

+ +
+ +
+ About You + +

+
+ +

+ +

+
+ +

+
+ +
+ Location Of Your Application Or Site + +

+
+ +

+ +

+
+ +

+
+ +
+ +
+ +{include file='inc/footer.tpl'} diff --git a/mod/oauth_api/vendors/oauth/example/server/www/hello.php b/mod/oauth_api/vendors/oauth/example/server/www/hello.php new file mode 100644 index 000000000..8cb94bb1e --- /dev/null +++ b/mod/oauth_api/vendors/oauth/example/server/www/hello.php @@ -0,0 +1,65 @@ + + * + * + * The MIT License + * + * Copyright (c) 2007-2008 Mediamatic Lab + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +require_once '../core/init.php'; + +$authorized = false; +$server = new OAuthServer(); +try +{ + if ($server->verifyIfSigned()) + { + $authorized = true; + } +} +catch (OAuthException $e) +{ +} + +if (!$authorized) +{ + header('HTTP/1.1 401 Unauthorized'); + header('Content-Type: text/plain'); + + echo "OAuth Verification Failed: " . $e->getMessage(); + die; +} + +// From here on we are authenticated with OAuth. + +header('Content-type: text/plain'); +echo 'Hello, world!'; + +?> \ No newline at end of file diff --git a/mod/oauth_api/vendors/oauth/example/server/www/index.php b/mod/oauth_api/vendors/oauth/example/server/www/index.php new file mode 100644 index 000000000..f5cadbe61 --- /dev/null +++ b/mod/oauth_api/vendors/oauth/example/server/www/index.php @@ -0,0 +1,37 @@ + + * + * + * The MIT License + * + * Copyright (c) 2007-2008 Mediamatic Lab + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +require '../core/init.php'; + +$smarty = session_smarty(); +$smarty->display('index.tpl'); + +?> diff --git a/mod/oauth_api/vendors/oauth/example/server/www/logon.php b/mod/oauth_api/vendors/oauth/example/server/www/logon.php new file mode 100644 index 000000000..5c937b719 --- /dev/null +++ b/mod/oauth_api/vendors/oauth/example/server/www/logon.php @@ -0,0 +1,55 @@ + + * + * + * The MIT License + * + * Copyright (c) 2007-2008 Mediamatic Lab + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +require_once '../core/init.php'; + +if (isset($_POST['username']) && isset($_POST['password'])) +{ + if ($_POST['username'] == USERNAME && $_POST['password'] == PASSWORD) + { + $_SESSION['authorized'] = true; + if (!empty($_REQUEST['goto'])) + { + header('Location: ' . $_REQUEST['goto']); + die; + } + + echo "Logon succesfull."; + die; + } +} + +$smarty = session_smarty(); +$smarty->display('logon.tpl'); + +?> \ No newline at end of file diff --git a/mod/oauth_api/vendors/oauth/example/server/www/oauth.php b/mod/oauth_api/vendors/oauth/example/server/www/oauth.php new file mode 100644 index 000000000..e0badcc39 --- /dev/null +++ b/mod/oauth_api/vendors/oauth/example/server/www/oauth.php @@ -0,0 +1,77 @@ + + * + * + * The MIT License + * + * Copyright (c) 2007-2008 Mediamatic Lab + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +require_once '../core/init.php'; + +$server = new OAuthServer(); + +switch($_SERVER['PATH_INFO']) +{ +case '/request_token': + $server->requestToken(); + exit; + +case '/access_token': + $server->accessToken(); + exit; + +case '/authorize': + # logon + + assert_logged_in(); + + try + { + $server->authorizeVerify(); + $server->authorizeFinish(true, 1); + } + catch (OAuthException $e) + { + header('HTTP/1.1 400 Bad Request'); + header('Content-Type: text/plain'); + + echo "Failed OAuth Request: " . $e->getMessage(); + } + exit; + + +default: + header('HTTP/1.1 500 Internal Server Error'); + header('Content-Type: text/plain'); + echo "Unknown request"; +} + +?> \ No newline at end of file diff --git a/mod/oauth_api/vendors/oauth/example/server/www/register.php b/mod/oauth_api/vendors/oauth/example/server/www/register.php new file mode 100644 index 000000000..c5785c2c8 --- /dev/null +++ b/mod/oauth_api/vendors/oauth/example/server/www/register.php @@ -0,0 +1,28 @@ +updateConsumer($_POST, 1, true); + + $c = $store->getConsumer($key); + echo 'Your consumer key is: ' . $c['consumer_key'] . '
'; + echo 'Your consumer secret is: ' . $c['consumer_secret'] . '
'; + } + catch (OAuthException $e) + { + echo 'Error: ' . $e->getMessage() . '
'; + } +} + + +$smarty = session_smarty(); +$smarty->display('register.tpl'); + +?> \ No newline at end of file diff --git a/mod/oauth_api/vendors/oauth/example/server/www/services.xrds.php b/mod/oauth_api/vendors/oauth/example/server/www/services.xrds.php new file mode 100644 index 000000000..4c50aa12b --- /dev/null +++ b/mod/oauth_api/vendors/oauth/example/server/www/services.xrds.php @@ -0,0 +1,71 @@ + + * + * + * The MIT License + * + * Copyright (c) 2007-2008 Mediamatic Lab + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +header('Content-Type: application/xrds+xml'); + +$server = $_SERVER['SERVER_NAME']; + +echo '' . "\n"; + +?> + + + xri://$xrds*simple + + http://oauth.net/discovery/1.0 + #main + + + http://oauth.net/core/1.0/endpoint/request + http://oauth.net/core/1.0/parameters/auth-header + http://oauth.net/core/1.0/parameters/uri-query + http://oauth.net/core/1.0/signature/HMAC-SHA1 + http://oauth.net/core/1.0/signature/PLAINTEXT + http:///oauth/request_token + + + http://oauth.net/core/1.0/endpoint/authorize + http://oauth.net/core/1.0/parameters/uri-query + http:///oauth/authorize + + + http://oauth.net/core/1.0/endpoint/access + http://oauth.net/core/1.0/parameters/auth-header + http://oauth.net/core/1.0/parameters/uri-query + http://oauth.net/core/1.0/signature/HMAC-SHA1 + http://oauth.net/core/1.0/signature/PLAINTEXT + http:///oauth/access_token + + + -- cgit v1.2.3