2010-10-05 8 views
7

모바일 앱을 작성하는 개발자가 사용할 REST API를 개발 중입니다. 사용자는 타사 서비스 (Google, Twitter 등)를 사용하여 자신을 인증 할 수 있으며, 이는 주로 OAuth에서 처리합니다 (해당 서비스에 따라 다름). 우리는 클라이언트 응용 프로그램과 API 서버 사이에 2-legged OAuth를 사용합니다 (여기서 소비자 키/비밀은 응용 프로그램에 따라 다릅니다. 개발자는 응용 프로그램에 등록 할 때 당사 사이트에서 가져옵니다).무국적 REST API를 구현하는 방법

내 문제는 어떻게 사용자 인증 상태를 추적 할 수 있는지를 처리하는 것입니다. 각 요청에서 보낼 사용자 자격 증명이 없습니다. 사용자가 로그인 할 때 고유 한 session_id를 만든 다음 REST API에 대한 각 요청에서이를 요구할 수 있습니다. 내 문제에 대한 다른 해결책이 있습니까? 고유 한 session_id를 사용하여 사용자를 식별하면 Stateless REST API 관점에서 문제가 발생합니까?

+2

나는이 좋은 기사를 John Wilander가 여전히 소화하고있다. 아마도 그것은 당신을 도울 수 있습니다. http://appsandsecurity.blogspot.com/2011/04/rest-and-stateless-session-ids.html – RayLuo

답변

10

면책 조항 : 나는 보안 전문가가 아닙니다.

session_Id라고하지 마십시오. 인증 토큰이라고하고 자체 인증 체계를 사용하여 권한 부여 HTTP 헤더를 전달하십시오. 예를 들어 Google AuthSub을 참조하십시오.

사용자를 식별하고 요청 수행 권한이 있는지 여부를 확인하는 것 외에는이 인증 토큰을 사용하지 마십시오. 토큰에 상태를 연관시키지 말고 토큰을 기반으로하는 사용자 기본 설정을 검색하지 마십시오.

+0

입력 해 주셔서 감사합니다. – Andreas

+1

내 이해를 확인하기 위해서만 세션 토큰에 서버 측 세션 상태가 필요합니다. ? 즉, 세션의 수명은 서버에 의해 관리되며 서버 측 세션 시간 초과 후 토큰이 유효하지 않게됩니까? 비슷한 목표를 달성하는 방법을 찾고 있는데 서버에서 '세션'에 대한 개념이 없다. – Aron

+1

이것은 또한 내가 정말로 이해하지 못하는 것입니다. 모두는 보안과 무국적자에 대해 이야기하고 있지만 사용자를위한 세션은 어쨌든 서버에서 개최되어야합니다. – Gambo

관련 문제