2012-05-10 4 views
0

"REST API"에서 토큰 기반/쿠키 기반 인증을 사용하고 싶습니다. 즉, API를 소비자가 사용할 수 있으려면 사용자가 username/password를 사용하여 인증 URL을 호출하여이 토큰을 가져와야합니다.인증 호출의 REST 설계

Set-Cookie Header를 반환해도됩니까?

실제로 REST 원칙을 어긴 것이라고 생각하지만 HTTP 기본 인증 (요청할 때마다 사용자 이름/암호를 보내는 것을 의미) 없이는 어떻게 하시겠습니까?

어쩌면 이렇게 할 수 있을까요?

GET api/authentication/signin/?username=abc&pwd=123 
GET api/authentication/signout 

또는?

GET api/user/authtoken/?username=abc&pwd=123 (signin) 
DELETE api/user/authtoken/  (signout) 
GET api/user/    (returning details of the current user) 

등록은 어떻게됩니까?

POST api/user/ (which would also return an authtoken) 

또는?

GET api/user/abc/authtoken/?pwd=123 (signin of user abc) 
DELETE api/user/abc/authtoken/  (signout) 
GET api/user/abc/    (returning details of user abc) 

답변

0

나는 자원으로 세션을 치료하는 것입니다 :

POST /sessions 

세션을 만들고 쿠키를 반환합니다.

DELETE /sessions/:sessionid 

쿠키를 삭제하고 로그 오프하십시오.

GET /session/:sessionid 

세션이 유효한지 (예 : 쿠키가 만료되지 않았거나 무효화되었는지) 확인합니다.

하지만 기본적인 인증 또는 다른 표준 구성을 구현해야하며 다른 API도 쿠키를 통해 세션 데이터를 사용할 수있는 반면 맞춤 세션을 통해 인증해야한다고 생각합니다.

0

사용자 이름/암호 인증을 위해 내가 기본 인증 HTTP

http://en.wikipedia.org/wiki/Basic_access_authentication

을 사용하는 장점은 대부분의 HTTP 클라이언트 라이브러리가 밖으로의 상자를 지원한다는 것입니다. 필요한 경우 고급 방법이 있습니다 (다이제스트, oauth 등). 나는 내 자신을 발명하지 않으려 고하고 나는 쿠키를 피할 것입니다.

+0

나는 많은 시나리오에서 이것이 최선의 접근이라고 동의하지만 HTTP 기본 인증을 구현하고 싶지는 않다고 명시 적으로 말했습니다. – Max