Я предоставляю API разработчика для набора данных, я хочу добавить двухстороннюю аутентификацию oauth, чтобы я мог аутентифицировать приложения разработчиков для использования API. Во-первых, является ли это лучшим решением для этого типа аутентификации?
Во-вторых, с точки зрения реализации / потока, мое понимание верно:
Случайный разработчик, заходит на мой сайт и использует страницу «регистрации», на которой я генерирую им ключи API и секрет , которыеможет быть сгенерирован в любом случае.
Затем они используют библиотеку oauth, такую как php, найденную здесь , чтобы подписать свой запрос этими учетными данными.
$ consumer = new OAuthConsumer ('thegeneratedkey', 'thegeneratedsecret');
$ sig_method = new OAuthSignatureMethod_HMAC_SHA1;
//use oauth lib to sign request
$req = OAuthRequest::from_consumer_and_token($consumer, null, "GET", 'http://mydonaim/api/', array('someapimethod', 'somevalue'));
$sig_method = new OAuthSignatureMethod_HMAC_SHA1();
$req->sign_request($sig_method, $consumer, null);//note: double entry of token
- Мой сервер тогдаиспользует библиотеку oauth для проверки «подписи» этого запроса для аутентификации приложения разработчика.
$ secret = 'secret';// Игнорируем эту строку.
$secret = 'secret'; // Use the $_GET['oauth_consumer_key'] to find the secret in my system.
$consumer = new OAuthConsumer($_GET['oauth_consumer_key'], $secret);
$sig_method = new OAuthSignatureMethod_HMAC_SHA1;
$method = $_SERVER['REQUEST_METHOD'];
$uri = 'http://'.$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
$sig = $_GET['oauth_signature'];
$req = new OAuthRequest($method, $uri);
//token is null because we're doing 2-leg
$valid = $sig_method->check_signature( $req, $consumer, null, $sig );
Это правильно?
Если это так, нужно ли выполнять эту аутентификацию каждый раз, когда делается запрос, или я могу сгенерировать токен?каким-то образом уменьшить вес каждого HTTP-запроса от приложения разработчика к моему API?