방금 몇 년 된 이 기사 를 읽었 지만 REST API를 보호하는 영리한 방법을 설명합니다. 본질적으로 :
- 각 클라이언트에는 고유 한 공개 / 개인 키 쌍이 있습니다
- 클라이언트와 서버 만이 개인 키를 알고 있습니다. 그것은 와이어를 통해 전송되지 않습니다
- 각 요청마다 클라이언트는 여러 입력 (전체 요청 자체, 현재 타임 스탬프 및 개인 키)을 가져와 HMAC 함수를 통해 실행하여 요청의 해시를 생성합니다.
- 그런 다음 클라이언트는 일반 요청 (공개 키 포함)과 해시를 서버로 보냅니다.
- 서버는 클라이언트의 개인 키를 제공하고 (제공된 공개 키를 기반으로) 요청이 재생 공격 의 희생자가 아닌지 확인하는 타임 스탬프 검사 (알지 못함)를 수행합니다.
- 모든 것이 정상이면 서버는 개인 키와 동일한 HMAC 함수를 사용하여 요청의 자체 해시를 생성합니다.
- 그런 다음 서버는 두 해시 (클라이언트가 보낸 것 및 생성 한 것)를 비교합니다. 일치하면 요청이 인증되고 진행이 허용됩니다.
그런 다음 JWT 를 우연히 발견했습니다 . 매우 비슷하게 들립니다. 그러나 첫 번째 기사에서는 JWT를 전혀 언급하지 않았으므로 JWT가 위의 인증 솔루션과 다른지 궁금하다면 어떻게 해야하는지 궁금합니다.
1
Lol .. 난 그냥 똑같은 질문을하고 싶었고 Stateless 인증에 대해 처음 발견 한 것 중 하나는 AWS ( docs.aws.amazon.com/AmazonSimpleDB/latest/DeveloperGuide/…) 에서 찾은 것 입니다. 이 massimilianosciacco.com/… 과 같은 것을 구현 했습니다 . 그런 다음 JWS / JWT를 찾았으며 어떻게 든 비슷합니다. 그러나 내가 이해하는 한 JWT는 표준이며 위에서 설명한 다른 솔루션은 일부 사용자 정의 구현입니다 (표준화되지 않음). 내가 틀렸다면 누군가 나를 교정합니다.
—
nyxz
알아두면 좋은 점은 이런 종류의 세부 사항에 대해 걱정하는 유일한 사람이 아닙니다! JWT는 확실히 비슷 하다고 느끼며 보너스는 표준화 된 것입니다. 이 맞춤형 HMAC 솔루션으로 어떻게 공정하게 보안을 유지하는지 궁금합니다.
—
smeeb