2014-07-25 1 views
1

사람들이 자바 스크립트 (Node.js가 아닌 클라이언트 측)에서 사용하기위한 API를 구축했습니다. 문제는 누가 내 API를 사용하고 있는지 알아야합니다. 사람들에게 내 API에 대한 ajax 호출에 API 키를 포함 시키면 누구나 API 키를보고 사용할 수 있습니다.JS에서 호출 할 때 내 API 사용자를 어떻게 식별 할 수 있습니까?

JS에서 API를 호출하는 경우 내 API 사용자를 어떻게 식별합니까?

$.ajax(function(){ 
    url: "http://usefulapi.com/get-things?api_key=123412341234134", // Anybody can see my API key. 
    data: { some_data } 
}); 
+0

1) 공용 및 개인 키 암호화를 사용하십시오. 2) 특정 도메인의 요청 일 때만 키가 유효하도록 도메인에만 키를 지정하십시오. – BenM

+0

작성한 API는 어떤 언어입니까? PHP? – BenM

+0

이 경우 노드가 있지만 레일즈 API와 관련이 있다고 생각합니다. –

답변

2

일반적으로 API 액세스에는 공개 키 암호화와 비공개 키 암호화가 결합되어 있습니다. 개인 키는 API에만 알려져 있으므로 공개 키와 개인 키를 기반으로 해시를 만들고 서버 측에서 일치하는지 확인하십시오.

다음으로 키를 특정 도메인으로 제한하는 것이 좋습니다. PHP에서는 요청이 어디에서 왔는지 쉽게 확인하기 위해 $_SERVER['HTTP_ORIGIN'] 수퍼 글로벌을 쉽게 사용할 수 있습니다. 다음 의사 코드는 몇 가지 포인터를 당신에게 제공해야합니다 :

$domain = basename($_SERVER['HTTP_ORIGIN']);  
$apiKey = $_REQUEST['api_key']; 
// Now, get the private key for this domain 
// Check the private and public keys match 
// The request is either allowed or denied. 

당신이 볼 수 있듯이, 그것은 당신의 데이터베이스에 인증 테이블을 추가하고, 도메인, 공개 키와 내부의 개인 키를 저장하는 가치가있다, 그래서 당신은 인증 할 수 있습니다 요청.

+0

흥미 롭습니다. BenM! –

관련 문제