답변:
쿠키는 기본적으로 사전에있는 항목입니다. 각 항목에는 키와 값이 있습니다. 인증의 경우 키는 'username'과 같을 수 있으며 값은 username입니다. 웹 사이트를 요청할 때마다 브라우저에 요청에 쿠키가 포함되며 호스트 서버가 쿠키를 확인합니다. 따라서 인증은 자동으로 수행 될 수 있습니다.
쿠키를 설정하려면 요청 후 서버가 보낸 응답에 쿠키를 추가하면됩니다. 그러면 브라우저는 응답을 받으면 쿠키를 추가합니다.
쿠키 서버 측에 대해 만료 시간 또는 암호화와 같은 다양한 옵션을 구성 할 수 있습니다. 암호화 된 쿠키는 종종 서명 된 쿠키라고합니다. 기본적으로 서버는 사전 항목의 키와 값을 암호화하므로 서버 만 정보를 사용할 수 있습니다. 쿠키는 안전합니다.
브라우저는 서버가 설정 한 쿠키를 저장합니다. 브라우저가 해당 서버에 대한 모든 요청의 HTTP 헤더에서 쿠키를 추가합니다. 쿠키를 설정 한 도메인에 대해서만 쿠키를 추가합니다. Example.com은 쿠키를 설정하고 브라우저가 sub.example.com과 같은 하위 도메인으로 쿠키를 다시 보낼 수 있도록 HTTP 헤더에 옵션을 추가 할 수도 있습니다. 브라우저가 쿠키를 다른 도메인으로 보내는 것은 용납 될 수 없습니다.
나는 이것이 몇 년 늦었다는 것을 알고 있지만 Conor의 답변을 확장하고 토론에 조금 더 추가 할 수 있다고 생각했습니다.
쿠키 기반 인증의 작동 방식을 단계별로 설명해 줄 수 있습니까? 인증이나 쿠키와 관련하여 아무것도 한 적이 없습니다. 브라우저는 무엇을해야합니까? 서버는 무엇을해야합니까? 어떤 순서로? 우리는 어떻게 일을 안전하게 유지합니까?
1 단계 : 고객> 가입
무엇보다 먼저 사용자는 가입해야합니다. 클라이언트는 자신의 사용자 이름과 비밀번호가 포함 된 HTTP 요청을 서버에 게시합니다.
2 단계 : 서버> 가입 처리
서버는이 요청을 수신하고 데이터베이스에 사용자 이름과 비밀번호를 저장하기 전에 비밀번호를 해시합니다. 이렇게하면 누군가 데이터베이스에 액세스 할 수있는 경우 사용자의 실제 비밀번호가 표시되지 않습니다.
3 단계 : 클라이언트> 사용자 로그인
이제 사용자가 로그인합니다. 사용자는 자신의 사용자 이름 / 비밀번호를 제공하고 다시 서버에 HTTP 요청으로 게시됩니다.
4 단계 : 서버> 로그인 확인
서버는 데이터베이스에서 사용자 이름을 찾고 제공된 로그인 비밀번호를 해시 한 후 데이터베이스에서 이전에 해시 된 비밀번호와 비교합니다. 체크 아웃되지 않으면 401 상태 코드 를 전송하고 요청을 종료하여 액세스를 거부 할 수 있습니다. .
5 단계 : 서버> 액세스 토큰 생성
모든 것이 체크 아웃되면 사용자의 세션을 고유하게 식별하는 액세스 토큰을 만듭니다. 여전히 서버에서 액세스 토큰으로 두 가지 작업을 수행합니다.
따라서 쿠키는 클라이언트와 서버 사이의 모든 요청 (및 응답)에 첨부됩니다.
6 단계 : 클라이언트> 페이지 요청
클라이언트 측으로 돌아가서 로그인했습니다. 클라이언트가 인증이 필요한 페이지를 요청할 때마다 (즉, 로그인해야 함) 서버는 쿠키에서 액세스 토큰을 가져 와서이를 확인합니다. 해당 사용자와 연결된 데이터베이스에서 체크 아웃하면 액세스 권한이 부여됩니다.
시작해야합니다. 로그 아웃시 쿠키를 지우십시오!
쿠키 기반 인증
쿠키 기반 인증은 다음 4 단계에서 정상적으로 작동합니다.
브라우저는 각 후속 요청에 대해이 세션 ID를 제출하고,이 세션 ID를 기반으로 데이터베이스에 대해 세션 ID를 확인합니다. 웹 사이트는 어떤 클라이언트에 속하는 세션을 식별 한 다음 액세스 권한을 부여합니다.
사용자가 앱에서 로그 아웃하면 세션이 클라이언트 측과 서버 측에서 모두 파괴됩니다.