2013-05-18 3 views
0

내 연구에서 나는 여러 가지 다양한 출처를 보았지만, 어떻게 보면 사적인 API 키를 생성하는 쪽이 보이지 않고 다른 쪽이 그것을 유지하는 방법을 알지 못합니다.Amazon S3 REST API; 클라이언트와 서비스간에 API 키가 처음 전송되는 방식은 무엇입니까?

Amazon S3 Restful API를 롤 모델로 추천하는 사람이 많으므로 이해한다면 자신 만의 목적으로 비슷한 것을 만들 수 있습니다.

Amazon's S3 REST API.

예컨대 이 example은 매우 정중하게 프로세스를 설명하지만 API 키를 생성하는 부분은 설명하지 못합니다. 따라서 사용자 가입시 비공개 API 키를 생성하는 서비스 측이 데이터베이스의 사용자 ID에이를 할당합니까? 이 비록 사건을 경우

클라이언트는 서비스가 실제로 확인할 수 있도록, 각 요청에 대해 서명를 만들기 위해 API 키를 알 필요가있다. 그렇다면 양 쪽 모두 비공개 API 키를 어떻게 잡을 수 있습니까?

저는 제 고객이 RESTful API 서비스에 대해 이야기하면서 iPhone 응용 프로그램과 AngularJS 웹 응용 프로그램을 가지고 있습니다.

답변

-1

먼저

많은 감사, 당신은 당신의 클라이언트에 키를 제공하지 않습니다. 일반적으로 그것은 보안상의 악몽입니다. (또한 키 생성에는 전파하는 데 몇 시간이 걸릴 수 있으므로 각 키에 대한 사용 권한 등을 관리해야합니다.) 그래서 모든 서명은 서버에서 수행하며 키는 서버를 떠나지 않습니다.

서버에 S3 키가 있지만 클라이언트가 무언가를 할 수있는 권한 (특정 파일을 가져 오거나 파일을 가져옴)을 제공하는 서명 된 링크 만 반환 할 수 있습니다. 그것은 마치 어머니가 할 수있는 게임과 같습니다. 클라이언트가 당신에게 "S3 signed link"를 요구하면, S3와 하나의 일을 이야기 할 수 있습니다. 서버가 사소한 작업 (요청 확인이 승인 된 후 서명 된 URL을 반환)을 수행하고 있기 때문에 규모를 상당히 확장 할 수 있습니다.

"목록 파일"또는 "파일 삭제"와 같은 일부 경우 서버가 S3을 호출하는 것이 좋습니다 (즉 클라이언트의 웹 요청에서 S3에 웹 요청을하는 것) (서명 된 링크를 망쳐 놓는 대신) 클라이언트에게. 그러나 이렇게하면 올바른 기술을 사용하지 않는 한 스케일을 조정할 때 문제가 발생할 수 있습니다. (예 : node.js와 같은 이벤트 서버가 필요함)

PUT 요청의 경우 서명 된 링크는 파일 유형과 같이 많은 시간을 미리 지정해야합니다. 주의 깊게 AWS 사양을 읽어야합니다.

Confused Deputy에주의하십시오. 코드에는 모든 사용자의 파일을 볼 수있는 하나의 키가 있으므로 사용자 간의 보안은 사용자의 책임입니다.