Dank patrickmcgraw I 2-legged oauth authentificaton Kommentar verwendet. Hier ist ein Java-Code.
Für Client-Seite (mit Jersey api):
OAuthParameters params = new OAuthParameters().signatureMethod("HMAC-SHA1").
consumerKey("consumerKey").version("1.1");
OAuthSecrets secrets = new OAuthSecrets().consumerSecret("secretKey");
OAuthClientFilter filter = new OAuthClientFilter(client().getProviders(), params, secrets);
WebResource webResource = resource();
webResource.addFilter(filter);
String responseMsg = webResource.path("oauth").get(String.class);
Auf Anbieterseite:
@Path("oauth")
public class OAuthService {
@GET
@Produces("text/html")
public String secretService(@Context HttpContext httpContext) {
OAuthServerRequest request = new OAuthServerRequest(httpContext.getRequest());
OAuthParameters params = new OAuthParameters();
params.readRequest(request);
OAuthSecrets secrets = new OAuthSecrets().consumerSecret("secretKey");
try {
if(!OAuthSignature.verify(request, params, secrets))
return "false";
} catch (OAuthSignatureException ose) {
return "false";
}
return "OK";
}
}
Hier ist der Code für PHP-Client:
<?php
require_once 'oauth.php';
$key = 'consumerKey';
$secret = 'secretKey';
$consumer = new OAuthConsumer($key, $secret);
$api_endpoint = 'http://localhost:9998/oauth';
$sig_method = new OAuthSignatureMethod_HMAC_SHA1;
$parameters = null;
$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_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$res = curl_exec($ch);
echo $res;
curl_close($ch);
Wenn Sie Google zweibeinigen oauth Ich denke, du wirst feststellen, dass du es für den Fall, den du beschreibst, verwenden kannst. Wenn keine Drittanbieter beteiligt sind (die Personen, die die API-Aufrufe für Ihren Dienst ausführen, besitzen die Daten, die sie bearbeiten), ist keine Umleitung erforderlich. Im OAuth 2.0-Entwurf ist für Verbindungen, die über SSL erstellt werden, keine Signatur mehr erforderlich. – patrickmcgraw
Ja, denke, dies ist der beste Ansatz, es ist sicherer als HTTP-Authentifizierung, weil Sie kein Passwort mit Ihrer Anfrage senden müssen. – abovesun