2012-10-04 2 views
0

간단하게 사용하고 본질적으로 RESTful 인 웹 프레임 워크 인 Recess을 사용하여 간단한 웹 서비스를 개발하려고합니다. Recess에서 CRUD 기능을 사용하는 것이 매우 쉽다는 것을 알게되었습니다. MySQL 데이터베이스에 백엔드가있는 모델을 만들었으며 이미 REST API를 사용할 수있는 것으로 나타났습니다.RESTful API에서 사용자 인증은 어떻게 수행됩니까?

대단한데, 문제는 사용자 인증이 없다는 것이고, 위에서 설명한 정말 멋진 기능을 거의 쓸모 없게 만듭니다. 실제 응용 프로그램에서 사용자 별 자원에 액세스하려면 인증이 필요합니다. 예를 들어, 간단한 "할 일"응용 프로그램을 개발하고 있다고 가정 해 봅시다. 사용자는 다른 사람이 할 일 목록에 무엇을 넣을지에 관심이 없기 때문에 서비스는 사용자가 누구인지 식별하여 올바른 데이터를 제공해야합니다. 또한 사용자는 다른 사람의 자원을 읽거나 삭제하거나 업데이트 할 수 없어야합니다.

이것은 로그인 시스템에서 정상적으로 수행됩니다. 그러나 REST API의 경우 사용자는 어떻게 인증됩니까? 요청이있을 때마다 클라이언트가 사용자의 자격 증명 (예 : 사용자 이름 및 암호)을 제공해야합니까? 어떻게 피할 수 있습니까? 일반적으로 쿠키를 사용할 수는 있지만 모든 클라이언트가 반드시 웹 브라우저가 아니기 때문에 이는 바람직하지 않습니다. 그러나 쿠키의 기능을 에뮬레이션하려면 "쿠키"콘텐츠를 어떻게 전송해야합니까? (일반적으로 HTTP 헤더에서이 작업이 수행됩니다)? 마지막으로 Recess의 내장 REST 기능에서 이러한 문제에 대한 해결책을 어떻게 통합 할 수 있습니까?

알다시피, 저는 REST API를 처음 개발 한 것이므로 어떤 제안이나 조언도 환영 할 것입니다.

답변

3

RESTful 시스템은 이미 사용 가능한 기존 기술을 활용 한 다음이를 다시 구현합니다. 그리고 HTTP에는 이미 Basic Authentication의 형식으로 인증 지원이 포함되어 있으므로 다시 사용하면됩니다. 클라이언트가 자격 증명을 전송하는 데 널리 지원되는 메커니즘입니다.

그리고 네, 클라이언트는 각 요청마다 자격 증명을 보내야합니다. 쿠키는 반복적으로 암호를 입력하는 것을 원하지 않는 인간 고객을위한 것이며 여기에는 해당되지 않습니다. 쿠키는 서버의 세션 상태를 암시하며 이로 인해 확장 성이 매우 어려워 질 수 있습니다.

이 사이트에는 RESTful 인증에 관한 100 개의 질문이있을 수 있습니다. 나는 당신이 더 대중적인 것을 찾고 검색하도록 권장 할 것이다.

+0

소리가 계획과 비슷합니다. 하지만 RESTful 백엔드에 액세스 할 수있는 자바 웹 애플리케이션을 만드는 경우 어떻게해야할까요? 요청에 사용하기 위해 사용자의 자격 증명을 편리하게 유지하는 것이 바람직하지 않습니까? 페이지가 변경되면 예를 들어 로컬 저장소에 자격 증명을 저장해야합니까? 데스크톱/모바일 앱을 개발할 때 내가 할 수있는 일이 없을 때 더 좋은 방법이 있습니까? – Hassan

+0

평문 암호를 저장/전달하지 않으므로 소금물을 해싱하고 자격 증명을 해시 할 수 있습니다. SHA-256과 같은 것을 사용하면 좋은 모양이 될 것입니다. –