Я использую OAuth2-server-php Алекса Билби для OAuth в своем приложении. Я хотел бы использовать это для защиты моего API. У меня есть запрос на авторизацию, код авторизации, маркер доступа, все разобрано, все прекрасно работает.
Но как реализовать это для API?
Есть главный контроллер, который разбирает общие методы: простые операции получения и т. Д. В этом конструкторе я хотел бы убедиться, что URL-адрес, который они вызвали, действителен. Если access_token существует, привяжите связанный клиент к связанному пользователю.
Затем в контроллере, который контролирует весь /products
ресурс, я хотел бы проверить область для этого вызова, т.е. проверить, если для post / put / patch у access_token есть products_write
объем.
Возвращаясь к главному контроллеру, в конструкторе это так:
$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)""}
}
В чем здесь проблема, что мне не хватает? В учебнике или документации нет ничего о том, как на самом деле проверить запрос ресурса.
Проблема заключалась в том, что я уже вошел на основной сайт. Он увидел, что я прошел через это, и это было запрещено.
Других решений пока нет …