2014-01-28 3 views
0

REST API를 보호하는 방법을 이해하는 데 몇 가지 문제가 있습니다. 클라이언트가 등록하면 암호가 해시되어 HTTPS를 통해 서버로 전송됩니다. 그런 다음 서버는 해시 (password + privatesalt)를 저장합니다.서명을 사용하여 REST API 보안

클라이언트가 휴식 서비스를 사용하면 클라이언트는 자신의 암호 (예 : here)와 서명 HMAC-SHA1을 만듭니다. 서버 쪽에서 암호가 데이터베이스에서 해시로 처리되는 경우 클라이언트 서명과 비교하라는 요청에 서명하는 방법은 무엇입니까?

데이터가 웹을 통해 명확하게 표시되지만 사용자 인증을 원한다는 것을 알고 있습니다.

답변

0

당신 말이 맞습니다. 암호가 서버 측에 해시 된 & 해시에 저장된 경우 요청에서 계산 된 HMAC를 확인할 수 없습니다. MAC은 클라이언트와 서버간에 공유 암호가 필요합니다.

일부 솔루션이 될 수 :

  • 사용자 암호가 아닌 전용 API 키를 사용하여. 내가 아는 한, 이것이 AWS 선택입니다. 비밀번호는 사용자 계정의 관리 작업 (예 : 결제 연락처 변경)에 사용되며 API 키는 API 클라이언트에서만 사용됩니다. 이 경우이 API 키가 손상된 경우 보안을 더 제한된 영향으로 취소하고 새 키를 생성하는 것이 상대적으로 쉽습니다.
  • HTTPS를 X509 클라이언트 인증서와 함께 사용합니다. 이 솔루션은 좀더 복잡하고 설치가 더 복잡 할 수 있습니다. 그러나 인증이 프로토콜의 전송 계층으로 이동하기 때문에 API 사용자에게는 투명합니다.