세션이 실제로 RESTfulness를 위반합니까?


491

RESTful API에서 세션을 사용하는 것이 실제로 RESTfulness를 위반합니까? 나는 많은 의견이 어느 방향으로 가고 있는지 보았지만 세션이 RESTless 라고 확신하지는 않습니다 . 내 관점에서:

  • RESTfulness에 대한 인증은 금지되지 않습니다 (그렇지 않으면 RESTful 서비스에 거의 사용되지 않음)
  • 인증은 일반적으로 헤더에 요청에 인증 토큰을 보내서 수행됩니다.
  • 이 인증 토큰은 어떻게 든 얻어야하고 취소 될 수 있으며이 경우 갱신해야합니다.
  • 인증 토큰은 서버에서 검증해야합니다 (그렇지 않으면 인증이 아님).

세션이이를 어떻게 위반합니까?

  • 클라이언트 측 세션은 쿠키를 사용하여 실현됩니다
  • 쿠키는 단순히 추가 HTTP 헤더입니다
  • 세션 쿠키는 언제든지 얻어서 철회 할 수 있습니다
  • 세션 쿠키는 필요한 경우 무한 수명을 가질 수 있습니다
  • 세션 ID (인증 토큰)는 서버 측에서 검증됩니다.

따라서 클라이언트에게 세션 쿠키는 다른 독점 헤더 Cookie대신 헤더를 사용한다는 점을 제외하고 다른 HTTP 헤더 기반 인증 메커니즘과 정확히 동일 Authorization합니다. 쿠키 값 서버 측에 연결된 세션이 없다면 왜 차이가 있습니까? 서버가 RESTful로 작동 하는 한 서버 측 구현은 클라이언트와 관련이 없습니다 . 따라서 쿠키 자체 만으로는 API RESTless를 만들면 안되며 세션은 단순히 클라이언트에 대한 쿠키입니다.

내 가정이 잘못 되었습니까? 세션 쿠키를 RESTless로 만드는 이유는 무엇입니까 ?


5
여기서 정확한 문제를 다루었습니다 : stackoverflow.com/questions/1296421/rest-complex-applications/…
Will Hartung

5
또한 인증을 위해 세션 만 사용하는 경우 제공된 헤더를 사용하지 않는 이유는 무엇입니까? 그렇지 않으면 대화의 다른 상태에 세션을 사용하는 경우 REST의 Stateless 제약 조건을 위반하는 것입니다.
Will Hartung

2
감사합니다. 사용자가 제출 한 데이터를 임시로 저장하는 세션에 대해 이야기하고있는 것 같습니다. 제 경우에는 인증을 위해 구현 세부 정보로 이야기하고 있습니다. 이것이 의견 차이가있는 곳일 수 있습니까?
deceze

3
@deceze 나의 유일한 요점은 인증 토큰을 표현하기 위해 헤더를 사용하려는 경우 HTTP는 일반 쿠키 이외의 것을 제공한다는 것입니다. 따라서 이것을 사용하지 말고 무료 의미를 유지하십시오 (페이로드를 보는 사람은 할당 된 인증 토큰이 있음을 알 수 있습니다).
Will Hartung

7
물론 자신의 헤더를 구성하거나 인증 토큰에 대한 다른 헤더를 가로 채십시오. X-XYZZY 헤더를 사용하십시오. 그냥 문법일까요? 헤더는 정보를 전달합니다. "모두"가 인증 헤더의 용도를 알고 있기 때문에 인증 헤더는 쿠키보다 "자체 문서화"입니다. 그들이 JSESSIONID (또는 무엇이든)를 보았을 때, 어떤 가정도하거나, 더 나쁜 가정을 할 수 없습니다 (세션에 무엇을 저장하고 있는지, 다른 용도로 사용되는지 등). 코드 Aq12hsg에서 변수의 이름을 지정합니까? 물론 아닙니다. 여기에도 같은 것이 적용됩니다.
Will Hartung

답변:


299

먼저 몇 가지 용어를 정의하겠습니다.

  • 평안한:

    이 섹션에서 "RESTful"로 설명 된 REST 제약 조건을 따르는 응용 프로그램을 특성화 할 수 있습니다. [15] 서비스가 필수 제한 조건을 위반하면 RESTful로 간주 할 수 없습니다.

    Wikipedia 에 따르면 .

  • 상태 비 저장 제약 :

    다음으로 클라이언트-서버 상호 작용에 제약 조건을 추가합니다. 통신은 섹션 3.4.3 (그림 5-3)의 클라이언트-스테이트리스-서버 (CSS) 스타일에서와 같이 사실상 상태가 없어야합니다. 서버는 요청을 이해하는 데 필요한 모든 정보를 포함해야하며 서버에 저장된 컨텍스트를 활용할 수 없습니다. 따라서 세션 상태는 전적으로 클라이언트에서 유지됩니다.

    Fielding 논문 에 따르면 .

따라서 서버 측 세션은 REST의 상태 비 저장 제약 조건과 RESTfulness를 위반합니다.

따라서 클라이언트에게 세션 쿠키는 권한 부여 또는 다른 독점 헤더 대신 쿠키 헤더를 사용한다는 점을 제외하고 다른 HTTP 헤더 기반 인증 메커니즘과 정확히 동일합니다.

세션 쿠키를 통해 클라이언트 상태를 서버에 저장하므로 요청에 컨텍스트가 있습니다. 로드 밸런서와 다른 서비스 인스턴스를 시스템에 추가해 봅시다. 이 경우 서비스 인스턴스간에 세션을 공유해야합니다. 그러한 시스템을 유지 관리하고 확장하기가 어렵 기 때문에 확장이 심하지 않습니다 ...

제 생각에는 쿠키에는 아무런 문제가 없습니다. 쿠키 기술은 저장된 데이터가 모든 요청에 ​​의해 쿠키 헤더에 자동으로 첨부되는 클라이언트 측 저장 메커니즘입니다. 그런 종류의 기술에 문제가있는 REST 제약 조건을 모르겠습니다. 따라서 기술 자체에는 문제가 없으며 사용법은 문제입니다. Fielding은 왜 HTTP 쿠키가 좋지 않다고 생각하는지에 대한 하위 섹션을 작성했습니다 .

내 관점에서:

  • RESTfulness에 대한 인증은 금지되지 않습니다 (그렇지 않으면 RESTful 서비스에 거의 사용되지 않음)
  • 인증은 일반적으로 헤더에 요청에 인증 토큰을 보내서 수행됩니다.
  • 이 인증 토큰은 어떻게 든 얻어야하고 취소 될 수 있으며이 경우 갱신해야합니다.
  • 인증 토큰은 서버에서 검증해야합니다 (그렇지 않으면 인증이 아님).

당신의 관점은 꽤 견고했습니다. 유일한 문제는 서버에서 인증 토큰을 생성한다는 개념이었습니다. 그 부분은 필요하지 않습니다. 필요한 것은 클라이언트에 사용자 이름과 비밀번호를 저장하고 모든 요청과 함께 보내는 것입니다. HTTP 기본 인증 및 암호화 된 연결보다이 작업을 수행 할 필요가 없습니다.

그림 1.-신뢰할 수있는 클라이언트의 상태 비 저장 인증

  • 그림 1.-신뢰할 수있는 클라이언트의 상태 비 저장 인증

모든 요청을 인증해야하기 때문에 서버 측에서 메모리를 통한 인증 캐시가 필요할 수 있습니다.

이제 이것은 당신이 작성한 신뢰할 수있는 클라이언트가 잘 작동하지만 타사 클라이언트는 어떻습니까? 사용자 이름과 비밀번호 및 사용자의 모든 권한을 가질 수 없습니다. 따라서 타사 클라이언트가 특정 사용자가 가질 수있는 권한을 별도로 저장해야합니다. 따라서 클라이언트 개발자는 타사 클라이언트를 등록하고 고유 한 API 키를 얻을 수 있으며 사용자는 타사 클라이언트가 일부 권한에 액세스 할 수 있습니다. 이름과 이메일 주소를 읽거나 친구 등을 나열하는 등 타사 클라이언트를 허용 한 후 서버는 액세스 토큰을 생성합니다. 이러한 액세스 토큰은 타사 클라이언트에서 다음과 같이 사용자가 부여한 권한에 액세스하는 데 사용할 수 있습니다.

그림 2.-타사 클라이언트의 상태 비 저장 인증

  • 그림 2.-타사 클라이언트의 상태 비 저장 인증

따라서 타사 클라이언트는 신뢰할 수있는 클라이언트 (또는 사용자로부터 직접)로부터 액세스 토큰을 얻을 수 있습니다. 그런 다음 API 키 및 액세스 토큰으로 유효한 요청을 보낼 수 있습니다. 이것이 가장 기본적인 타사 인증 메커니즘입니다. 모든 타사 인증 시스템 (예 : OAuth)의 설명서에서 구현 세부 정보에 대해 자세히 알아볼 수 있습니다. 물론 이것은 더 복잡하고 안전 할 수 있습니다. 예를 들어 서버 측에서 모든 단일 요청의 세부 정보에 서명하고 요청과 함께 서명을 보낼 수 있습니다. 실제 솔루션은 응용 프로그램의 요구에 따라 다릅니다.


5
예, 당신은 완전히 옳습니다. 이 질문을 게시 한 이후로 그것을 완전히 보았습니다. 세션 쿠키는 기술적 인 세부 사항을 볼 때 특별한 것이 아니지만 나무의 숲이 빠져 있습니다. 멋진 차트 때문에 답변을 수락했습니다. ;)
사망

1
좋아, 나는 REST 서비스의 응답이 권한 부여에 의존해서는 안된다고 생각했다. 그래서 처음 두 가지 솔루션은 100 % 괜찮고 다른 것은 서비스가 정보를 사용하여 요청을 허용하는지 여부를 결정하면 괜찮습니다. 아니. 따라서 사용자 권한이 현재 리소스 표현에 영향을 미칩니다.
inf3rno

1
표현의 권한 의존성에 대한 질문을 작성하겠습니다. 적절한 해결책을 얻 자마자이 답변을 확장 할 것입니다.
inf3rno

3
@ inf3rno, 완전 RESTful 서비스는 전통적으로 구현되는 방식으로 인증을 위해 세션 쿠키에 의존 할 수 없다는 것이 사실입니다. 그러나 쿠키에 서버에 나중에 필요한 모든 상태 정보가 포함 된 경우 쿠키를 사용하여 인증을 수행 할 수 있습니다. 공개 / 개인 키 쌍으로 서명하여 쿠키가 무단 변경되는 것을 방지 할 수도 있습니다. 아래 내 의견을 참조하십시오.
jcoffland

3
모든 사람이 암호를 클라이언트 측에 저장하고 모든 요청과 함께 보내야한다는 의견을 받아들이는 이유를 모르겠습니다. 이는 매우 나쁜 습관이며 고객의 민감한 데이터를 위험에 빠뜨립니다. 해시되지 않은 비밀번호 (비밀번호를 반복해서 보내야 함)는 어디에도 저장해서는 안됩니다. 이를 수락하면 대부분의 인증 시스템에서와 같이 토큰을 사용하는 것입니다.이 경우 토큰 리포지토리를 확장하는 데 사용하는 메커니즘은 세션 확장 성과 동일한 확장 성 문제를 갖습니다.
lvoelk

334

우선, REST는 종교가 아니며 그렇게 접근해서는 안됩니다. RESTful 서비스에는 장점이 있지만, 애플리케이션에 적합한 REST의 원칙 만 따라야합니다.

즉, 인증 및 클라이언트 측 상태는 REST 원칙을 위반하지 않습니다. REST는 상태 전이가 상태 비 저장을 요구하지만 서버 자체를 의미합니다. 마음에 모든 REST는 문서에 관한 것입니다. 상태 비 저장의 기본 개념은 서버가 클라이언트가 아닌 상태 비 저장이라는 것입니다. 동일한 요청 (동일한 헤더, 쿠키, URI 등)을 발행하는 모든 클라이언트는 애플리케이션에서 동일한 위치로 이동해야합니다. 웹 사이트가이 서버 측 탐색 변수를 업데이트하여 사용자의 현재 위치를 저장하고 탐색을 관리하면 REST가 위반됩니다. 동일한 요청 정보를 가진 다른 클라이언트는 서버 측 상태에 따라 다른 위치로 이동합니다.

Google의 웹 서비스는 RESTful 시스템의 환상적인 예입니다. 요청 시마다 사용자의 인증 키가있는 인증 헤더가 전달되어야합니다. 서버가 인증 키의 상태를 추적하고 있기 때문에 REST 원칙을 약간 위반합니다. 이 키의 상태는 유지되어야하며, 더 이상 액세스 권한을 부여하지 않는 일종의 만료 날짜 / 시간이 있습니다. 그러나 게시물 맨 위에서 언급했듯이 응용 프로그램이 실제로 작동하려면 희생을해야합니다. 즉, 인증 토큰은 가능한 모든 클라이언트가 유효한 시간 동안 액세스 권한을 계속 부여 할 수있는 방식으로 저장해야합니다. 한 서버가 인증 키의 상태를 다른 부하 분산 서버가 해당 키를 기반으로 요청을 처리 할 수 ​​없을 정도로 관리하고있는 경우 REST의 원칙을 실제로 위반하기 시작했습니다. Google 서비스는 언제든지로드 밸런스 서버 A에 대해 휴대 전화에서 사용하고있는 인증 토큰을 가져 와서 데스크톱에서로드 밸런스 서버 B를 치고 여전히 시스템에 액세스 할 수 있으며 요청은 동일했습니다.

결론은 인증 토큰이 가능한 한 많은 REST 특성을 보존 할 수 있도록 일종의 백업 저장소 (데이터베이스, 캐시 등)에 대해 유효성을 검증해야한다는 것입니다.

나는 그 모든 것이 이해되기를 바랍니다. 또한 대표 상태 이전에 관한 Wikipedia 기사제약 조건 섹션 을 확인하십시오 ( 아직없는 경우). REST의 신조가 실제로 논쟁하고있는 이유와 그 이유에 대해 특히 깨달았습니다.


6
나는 당신의 초기 진술을 바꾸겠습니다. REST 제약 조건이 애플리케이션에 적합한 경우에만 REST를 사용하십시오. 이러한 제약 조건의 하위 집합을 자유롭게 적용 할 수 있으며 혜택의 하위 집합을 얻게됩니다. 그러나이 시점에서 자신 만의 아키텍처 스타일을 만들었습니다. 로이 논문의 처음 네 장은 원칙적인 디자인에 관한 것입니다. REST는 하나의 예일뿐입니다.
Darrel Miller

4
@Darrel 공정한 충분한 포인트. 솔직히 Google이 어떻게하는지 잘 모르겠지만 만료 시간을 인증 토큰으로 인코딩 할 수 있습니다. 그래도 내 큰 포인트는 여전히 유효하다고 생각합니다. REST가 상태 비 저장을 요구 하는 이유 를 이해하는 한 간단히 유지 보수해야하는 일부 유형의 상태가 있으며 나머지 시스템에 대한 많은 영향과 RESTful 아키텍처의 장점을 이해하는 방식으로이를 위반할 수 있습니다. .
Jared Harding

7
지금까지 다른 주장은 없었으므로이 글을 잘 작성했습니다. 중요한 부분은 상태 비 저장 서버상태 비 저장 서버를 의미하지 않는다는 것입니다. 종종 잘못 이해되거나 잘못 적용되는 것으로 생각됩니다. 서버는 (일반적으로 수 해야합니다 ) 그만큼이 동작으로, 원하는 어떤 상태가 나무 등을 .
deceze

10
설교가 편안하지 않다는 설교를 많이 들었습니다. 웹 응용 프로그램을 빌드하려는 경우 HTTP 기본 인증은 실제로 거꾸로 진행됩니다.
Ben Thurley

1
@Micah Henning, 서버가 인증 토큰의 유효성을 검사하기 위해 상태 정보를 요구한다는 잘못된 가정을하고 있습니다. 개인 키를 모르는 경우 공개 / 개인 키 쌍으로 서명 한 토큰을 위조 할 수 없다고 합리적으로 판단 할 수 있습니다. 토큰이 유효한지 확인하려면 공개 키만 있으면됩니다. 여전히 완전히 RESTful 인증이 가능하다고 생각합니다.
jcoffland

12

쿠키는 인증 용이 아닙니다. 왜 바퀴를 재발 명합니까? HTTP에는 잘 설계된 인증 메커니즘이 있습니다. 쿠키를 사용하는 경우 HTTP를 전송 프로토콜로만 사용하므로 예를 들어 사용자에게 잘못된 인증을 제공했음을 알리기 위해 자체 신호 시스템 을 만들어야 합니다 (HTTP 401을 사용하는 것은 그렇지 않을 수 있으므로 올바르지 않습니다) Www-AuthenticateHTTP 사양에 따라 클라이언트에 공급 :)). 또한 Set-Cookie클라이언트에게만 권장 사항입니다. 내용은 저장 될 수도 있고 저장되지 않을 수도 있습니다 (예 : 쿠키가 비활성화 된 경우) Authorization.

또 다른 요점은 인증 쿠키를 얻으려면 먼저 어딘가에 자격 증명을 제공하고 싶습니까? 그렇다면 RESTless가 아닐까요? 간단한 예 :

  • 당신은 시도 GET /a 쿠키없이
  • 어떻게 든 인증 요청을받습니다
  • 당신은 가서 어떻게 든 권한을 부여 POST /auth
  • 당신은 얻을 Set-Cookie
  • 당신이 시도 GET /a 쿠키. 그러나이 GET /a경우 dem 등적으로 행동합니까?

요약하면 일부 리소스에 액세스하고 인증이 필요한 경우 다른 곳이 아닌 동일한 리소스 에서 인증해야한다고 생각합니다 .


1
그동안 나는이 관점에 대해서도 더 많이왔다. 기술적으로는 거의 차이가 없다고 생각합니다. 모두 HTTP 헤더 일뿐입니다. 별도의 주소를 통한 로그인이 필요한 경우 인증 동작 자체가 RESTful이 아니라는 것은 사실 입니다. 따라서 쿠키는 인증 시스템에서 더 큰 문제의 증상 일뿐입니다.
deceze

이것은 웹 브라우저가 Authorization: Basic또는을 지원한다는 사실을 실제로 설명하지는 않습니다 Digest. 브라우저 컨텍스트에서 기본 또는 다이제스트 인증보다 고급 작업을 수행하려면 Authorization헤더 이외의 것이 필요합니다 .
올리버 찰스 워드

1
당연히-순수한 JS를하고 있다면 기본적으로 괜찮습니다 (예 : Websockets 제외). 그러나 필자의 요점은 API 기반 인증이 브라우저 시나리오에서 반드시 고려해야 할 사항은 아니라는 것입니다.
올리버 찰스 워드

5
GET /a쿠키가없고 쿠키가있는 것은 분명히 두 가지 다른 요청이며 서로 다르게 동작하는 것이 허용됩니다.
TRiG

1
@TRiG에 추가하려면 GET /a인증 헤더가있는 이 논리에 따라 인증 헤더가 GET /a없는 것과 동일하므로 REST에서도 동일하게 사용할 수 없습니다. 하나의 http 헤더를 다른 http 헤더와 다르게 취급하려면 최소한 그 주소를 다룰 것입니다.
재스퍼

7

실제로 RESTfulness는 Universal Resource Identifier로 표시되는 RESOURCES에만 적용됩니다. 따라서 REST와 관련하여 헤더, 쿠키 등과 같은 것에 대해서도 이야기하는 것은 실제로 적절하지 않습니다. REST는 HTTP를 통해 일상적으로 수행 되더라도 모든 프로토콜에서 작동 할 수 있습니다.

주요 결정자는 다음과 같습니다. URI 인 REST 호출을 보내면 일단 호출이 서버에 성공적으로 도달하면 전환이 수행되지 않은 것으로 가정하여 해당 URI가 동일한 컨텐츠를 리턴합니까 (PUT, POST, DELETE) ? 이 테스트는 리턴 된 오류 또는 인증 요청을 제외합니다.이 경우 요청이 아직 서버에 요청하지 않았기 때문에 제공된 URI에 해당하는 문서를 리턴하는 서블릿 또는 애플리케이션을 의미합니다.

마찬가지로 POST 또는 PUT의 경우 지정된 URI / 페이로드를 보낼 수 있으며 메시지를 몇 번이나 보내든 관계없이 항상 동일한 데이터를 업데이트하여 후속 GET이 일관된 결과를 반환하도록합니까?

REST는 데이터를 전송하는 데 필요한 하위 레벨 정보가 아니라 애플리케이션 데이터에 관한 것입니다.

다음 블로그 게시물에서 Roy Fielding은 전체 REST 아이디어를 훌륭하게 요약했습니다.

http://groups.yahoo.com/neo/groups/rest-discuss/conversations/topics/5841

RESTful 시스템은 하나의 정상 상태에서 다음 정상 상태로 진행되며, 이러한 각 정상 상태는 잠재적 인 시작 상태 및 잠재적 인 최종 상태입니다. 즉, RESTful 시스템은 단순한 규칙은 항상 REST에 있거나 하나의 RESTful 상태에서 다른 RESTful 상태로 전환되도록 규칙을 포함합니다. 시스템은 복잡한 상태 다이어그램 일 수 있지만 각 사용자 에이전트는 한 번에 하나의 상태 (현재 정상 상태) 만 볼 수 있으므로 각 상태는 단순하며 독립적으로 분석 할 수 있습니다. 사용자 OTOH는 언제든지 자신의 전환을 만들 수 있습니다 (예 : URL 입력, 북마크 선택,"편집기 등을여십시오.")


정보가 URI 및 POST 페이로드의 일부가 아닌 한 쿠키 또는 헤더를 통해 수행되는지 여부에 관계없이 인증 문제는 REST와 전혀 관련이 없습니다. 따라서 상태 비 저장 상태와 관련하여 애플리케이션 데이터에 대해서만 이야기하고 있습니다.

예를 들어, 사용자가 GUI 화면에 데이터를 입력 할 때 클라이언트는 입력 된 필드, 누락되지 않은 필수 필드 등을 추적합니다. 이것은 모든 클라이언트 컨텍스트이며 전송 또는 추적해서는 안됩니다. 서버에 의해. 서버로 전송되는 것은 하나의 RESTful 상태에서 다른 RESTful 상태로 해당 자원에서 전이가 발생하도록 IDENTIFIED 자원 (URI에 의해)에서 수정해야하는 완전한 필드 세트입니다.

따라서 클라이언트는 사용자의 작업을 추적하고 논리적으로 완전한 상태 전이만 서버로 보냅니다.


3
나는 이것이 제기 된 질문에 어떤 빛을 비추는 지 알지 못한다.
jcoffland

1

기본 액세스 인증은 식별 할 때마다 암호화 된 username : password를 사용하지만 RBAC에 필요한 것은 사용자가 특정 통화에 사용하려는 역할이기 때문에 기본 액세스 인증 인 HTTP 트랜잭션은 RBAC에 적합하지 않습니다. RBAC는 사용자 이름에 대한 권한이 아니라 역할에 대한 유효성을 검사합니다.

usernameRole : password와 같이 연결하려고 시도 할 수 있지만 이는 나쁜 습관이며, 사용자가 더 많은 역할을 가질 때 인증 엔진은 모든 역할을 연결하여 테스트하고 모든 호출을 다시 호출해야하기 때문에 비효율적입니다. 이는 RBAC의 가장 큰 기술적 이점 중 하나 인 매우 빠른 인증 테스트를 파괴합니다.

따라서 기본 액세스 인증을 사용하여 문제점을 해결할 수 없습니다.

이 문제를 해결하려면 세션 유지가 필요하며 일부 답변에 따르면 REST와 모순되는 것처럼 보입니다.

이것이 REST가 종교로 취급되어서는 안된다는 대답에 대해 제가 좋아하는 것입니다. 복잡한 비즈니스 사례, 예를 들어 의료 분야에서는 RBAC가 절대적으로 일반적이며 필요합니다. 모든 REST 도구 디자이너가 REST를 종교로 취급하기 때문에 REST를 사용하도록 허용하지 않으면 안타까운 일입니다.

나에게 HTTP를 통해 세션을 유지하는 방법은 많지 않습니다. 쿠키, sessionId와 함께 또는 sessionId와 함께 헤더를 사용할 수 있습니다.

누군가 다른 아이디어가 있다면 기뻐할 것입니다.



-4
  1. 세션은 RESTless가 아닙니다
  2. http 용도로만 REST 서비스를 사용하거나 잘못 인식 했습니까? 쿠키 기반 세션은 자체 (!) http 기반 서비스에만 사용해야합니다! (예 : 모바일 / 콘솔 / 데스크톱 등 쿠키를 사용하면 문제가 될 수 있습니다.)
  3. 타사 개발자에게 RESTful 서비스를 제공하는 경우 쿠키 기반 세션을 사용하지 말고 대신 보안 문제를 피하기 위해 토큰을 사용하십시오.

3
쿠키는 인증 토큰을 보유한 서버의 세션에 대한 세션 키를 저장하는 데 사용해서는 안됩니다. 그러나 쿠키에 인증 토큰 자체가 있으면 가능한 솔루션입니다. (물론 쿠키는 httponly이고 안전해야합니다)
roberkules
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.