2条腿的OAuth客户端/服务器简单示例

本文介绍2条腿的OAuth(2-legged OAuth),这是一种适用于无需用户参与的公共数据认证场景的安全解决方案。通过PHP代码示例展示了客户端和服务端如何进行交互认证。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

3条腿的OAuth被广泛运用在诸如新浪微博等需要用户授权访问用户资源的开放平台中。 但一些公共数据并不需要用户参与,在这样的情况,就退化成消费和服务两者之间的交互认证。 2条腿的OAuth(2-legged OAuth)提供一种简洁安全的解决方案。 下面是客户端/服务器的简单示例。 如果请求没有带server参数,则表现为客户端,发送请求给自己并添加server参数。 从而表现为服务端,接受请求,验证并返回处理信息。 <?php // a super-stripped down 2-leg oauth server/client example
//http://oauth.net/code/
//http://oauth.googlecode.com/svn/code/php/OAuth.php
require 'oauth.php';
$key = '1234';
$secret = 'ABCD';
$consumer = new OAuthConsumer($key, $secret);
$sig_method = new OAuthSignatureMethod_HMAC_SHA1;
if($_GET['server']){
$method = $_SERVER['REQUEST_METHOD'];
$uri = 'http://'.$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
$sig = $_GET['oauth_signature'];
$req = new OAuthRequest($method, $uri);
//验证签名,因为是2legged OAuth,所以这里token为空
$valid = $sig_method->check_signature( $req, $consumer, null, $sig );
if(!$valid){
die('invalid sig');
}
echo 'orale!';
}else{
//call this file
$api_endpoint = 'http://'.$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF'];
//handle request in 'server' block above
$parameters = array('server'=>'true');
//请求签名
$req = OAuthRequest::from_consumer_and_token($consumer, null, "GET", $api_endpoint, $parameters);
$sig_method = new OAuthSignatureMethod_HMAC_SHA1();
$req->sign_request($sig_method, $consumer, null);//note: double entry of token
//get data using signed url
$ch = curl_init($req->to_url());
curl_exec($ch);
curl_close($ch);
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值