2017-12-04 1 views
0

인증을위한 토큰을 사용하면 상태를 유지할 수없는 REST 원칙을 벗어나게됩니까?토큰을 사용하여 REST 원칙을 위반합니까?

나는 REST가 필요한 응용 프로그램을 가지고 있으며 데이터베이스에 일부 토큰을 저장했습니다. 사용자가 작업을 원할 때마다 토큰 (사용자 이름과 암호를 보내어)을 가져 와서 요청할 때마다 서버로 보내야합니다.

+0

무엇이 응용 프로그램의 첫 번째 위치에 'REST'가 필요합니까? REST는 시스템 상호 작용을 아키텍처로 설계 한 것으로 클라이언트에 서비스가 제대로 적용되지 않으면 서버 측 변경에 대해보다 견고하게 만들 수 있습니다. HTTP와 REST를 혼동하고있을 것이다. 클라이언트가 username + password를 보내거나 각 요청과 함께 인증이 전송되는 한 토큰은 서버와 관련이 없습니다. –

+1

"무기명"방법으로 실제 HTTP 인증 ("Authorization"헤더)을 사용하십시오 (' 토큰 ') - https://tools.ietf.org/html/rfc6750 –

답변

1

인증 토큰은 REST 클라이언트를 인증하는 표준 방법입니다.

인증 토큰 자체는 API에 전달 된 인증 토큰에 따라 다르게 동작하지 않는 한 REST 원칙을 부추 기지 않습니다.

즉, 2 명의 소비자가 서로 다른 인증 토큰으로 동일한 요청을하고 둘 다 해당 작업을 수행 할 수있는 경우 결과는 동일해야합니다. https://dzone.com/articles/api-security-ways-to-authenticate-and-authorize

+0

2 명의 고객이 서로 다른 권한 (데이터베이스에 저장)을 가지고 있다면 어떻게 될까요? 이것이 허용 되었습니까, 아니면 REST 무국적 원칙을 어긴 것입니까? – webpersistence

+0

네 가지 수준의 사용 권한도 허용됩니다. 사용하려는 피싱 및 사용자 지정 코드는 해당 사용 권한에 따라 달라지는 사용자 및/또는 복잡한 논리입니다. –

+0

즉 특정 동작에 대한 사용 권한을 정의 할 수 있습니다. 예 : 1 소비자가 사용자를 '검색'하고 '업데이트'할 수있는 반면 관리자는 '추가'및 '삭제'도 할 수 있습니다. 그런 식으로 애플리케이션 로직과 역할 기반 인증이 분리되고 독립적입니다. 응용 프로그램 논리가 역할 기반 인증을 손상시키지 않으며 그 반대의 경우도 마찬가지입니다. –

2

아니 그들은하지 않습니다 :

현재의 REST API 인증에 대한 자세한 정보를 찾을 수 있습니다.

인증 헤더와 같은 핵심 요소는 요청 자체와 직각이라는 사실입니다. 이는 Content-Type 헤더가 동일한 방식으로 요청의 속성입니다.

백엔드에서 인증이 구현되는 방식은 헤더를 제출하는 요청의 결과가 일관성이있는 한 토론에 밀접하지 않습니다. 인증 헤더를 검증하는 프로세스가 그 자체로는 상태 비 저장 프로세스가 될 수는 없습니다.

인증의 존재 여부 및 내용은 클라이언트가 "admin"토큰을 사용하고 있는지, 아니면 "admin"토큰을 사용하고 있는지에 따라 403 승인되지 않은 응답에서 제한된 양의 요청으로 클라이언트가받는 것에 영향을 미칠 수 있습니다. 권한이없는 사용자.

세션 상태 (RESTful이 아님)를 나타내는 쿠키와는 대조적입니다. 이는 두 헤더가 다른 용도로 사용되며 서로 다른 응용 프로그램 의미를 제공하기 때문입니다.

관련 문제