データセットに開発者APIを提供します。2本足のoauth認証を追加して、APIを使用する開発者アプリを認証できるようにします。まず、これはこのタイプの認証に最適なソリューションですか?
第二に、実装/フローの観点から、私の理解は正しいです:
ランダムな開発者が私のサイトにアクセスし、「サインアップ」ページを使用します。このページを送信すると、APIキーとシークレットが生成されます。
次に、ここにあるphpのようなoauthライブラリを使用して、これらの資格情報を使用してリクエストに署名します。
$ 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'; // 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 );
これは正しいです?
その場合、この認証はリクエストが行われるたびに実行する必要がありますか、それとも開発者アプリからAPIへの各HTTPリクエストの重みを減らすために何らかのトークンを生成できますか?