如何使用Alex Bilbie的OAuth2 Server PHP验证API调用是否是正确的资源请求?

时间:2015-02-26 10:51:32

标签: php oauth oauth-2.0 oauth2-server

我在我的应用上使用Alex Bilbie的OAuth2-server-php进行OAuth。我想用它来保护我的API。我已经获得授权请求,授权代码,访问令牌全部整理出来,效果很好。

但是如何为API实现这个?

有一个主控制器可以解决一般方法:简单获取等等。在该构造函数中,我想确保他们调用的URL有效。如果access_token存在,请将关联的客户端绑定到关联的用户。

然后,在控制整个/products资源的控制器中,我想验证此调用的范围,即检查access_token是否具有products_write的post / put / patch范围。

回到主控制器,在构造函数中是:

$oauth = new Oauth(); //creates a new instance of the OAuth server, with all relevant info regarding db, grant types, and supported scopes.
if(!$oauth->server->verifyResourceRequest($oauth->request, $oauth->response)) {
  echo '<pre>';
  var_dump($oauth->server->getResponse());
  exit();
}

它引起了大惊小怪:

object(OAuth2\Response)#129 (5) {
    ["version"]=>
    string(3) "1.1"
    ["statusCode":protected]=>
    int(400)
    ["statusText":protected]=>
    string(11) "Bad Request"
    ["parameters":protected]=>
    array(2) {
            ["error"]=>
            string(15) "invalid_request"
            ["error_description"]=>
            string(80) "Only one method may be used to authenticate at a time (Auth header, GET or POST)"
    }
    ["httpHeaders":protected]=>
    array(2) {
            ["Cache-Control"]=>
            string(8) "no-store"
            ["WWW-Authenticate"]=>
            string(149) "Bearer realm="Service", error="invalid_request", error_description="Only one method may be used to authenticate at a time (Auth header, GET or POST)""
    }
}

这里有什么问题,我错过了什么?教程或文档中没有关于实际验证资源请求的内容。

1 个答案:

答案 0 :(得分:0)

问题是我已登录主网站。它看到我已通过验证,但这是不允许的。