일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- Cloud
- Github Pages
- API
- Boostrap
- db
- web
- TMDB
- REACT
- Database
- HTML
- IntersectionObserver
- 배포
- jQuery
- til
- useEffect
- CSS
- data
- JavaScript
- W
- nosql
- firestoredatabase
- http
- bootstrap
- url
- supabase
- Fetch
- this
- Protocol
- SQL
- github
- Today
- Total
072DATA
`끄적끄적` 인증과 인가 간단한 개념 정리 ( 쿠키, 세션, 토큰, JWT ) 본문
인증 (Authentication)
인증은 사용자가 시스템에 접근할 수 있는 권한이 있는 사용자인지 확인하는 과정
시스템이 사용자가 누구인지 확인하는 것이 핵심임
ex) 사용자가 ID와 비밀번호를 입력하여 로그인
인가 (Authorization)
인가는 인증된 사용자가 특정 리소스에 접근할 권한이 있는지를 확인하는 과정
ex) 사용자가 로그인한 후 마이페이지에 접근할 때, 해당 페이지에 접근할 권한이 있는지 확인
인증과 인가는 서로 밀접하게 연관되어 있고
함께 작동하여 시스템의 보안성을 높임
인증 = 사용자 식별
인가 = 권한 확인
쿠키 (Cookie)
쿠키는 사용자의 브라우저에 저장되는 데이터 조각이고 주로 서버가 인증 정보를 기억하기 위해 사용됨
HTTP는 무상태(stateless) 이기 때문에 서버는 각 요청을 독립적으로 처리하고
사용자가 이전에 로그인했는지 등을 기억할 수 없기 때문에 쿠키는 이러한 문제를 해결할 수 있음
ex) 로그인한 후 쿠키에 저장된 세션 ID를 통해 사용자가 다시 로그인할 필요 없이 웹사이트를 탐색할 수 있음
세션 (Session)
세션은 서버가 사용자의 상태를 저장하는 방식임
로그인 성공 후 서버는 세션을 생성하고 세션 ID를 쿠키에 저장하여 브라우저와 연동됨
서버는 이 세션을 사용하여 사용자와 지속적인 연결을 유지하고 인증된 사용자로 인식함
*** JWT (JSON Web Token)
JWT는 상태를 저장하지 않고 인증 정보를 클라이언트에 암호화하여 저장하는 방식
세션과 달리 서버에 별도의 상태 정보를 저장하지 않아 확장성에서 유리함
서버가 클라이언트로부터 받은 JWT를 *복호화해 사용자를 인증
(*복호화: 암호화된 데이터를 정상적인 데이터로 변경하는 과정)
구성: 헤더, 페이로드, 서명으로 이루어져 있으며, 서버와 클라이언트 간 통신을 간편하게 만듭니다.
장점: 서버가 상태를 관리할 필요가 없어 서버 확장성이 좋고, 보안성을 강화할 수 있습니다.
JWT가 제공하는 두개의 토큰
Access Token: 사용자 인증 후 특정 리소스에 접근할 수 있도록 발급되는 짧은 유효기간의 토큰
Refresh Token: Access Token이 만료된 후 새로운 Access Token을 발급받을 수 있는 긴 유효기간의 토큰
따라서 Access Token과 Refresh Token으로 인증 후 리소스 접근 및 토큰 갱신에 사용됨.
요약
- 인증은 사용자가 시스템에 접근할 수 있는지를 확인
인가는 사용자가 특정 리소스에 접근할 수 있는 권한이 있는지를 확인 - *HTTP의 무상태성을 극복하기 위해 쿠키 세션 JWT와 같은 방법이 사용
- 세션은 서버에 상태를 저장하지만
JWT는 클라이언트에 상태를 저장하여 서버 확장성과 보안을 강화
'Anything > 끄적끄적' 카테고리의 다른 글
TanStack Query 정리 ( useQuery, useMutation ) (0) | 2024.09.13 |
---|---|
json-server 사용하기 (0) | 2024.09.10 |
`끄적끄적` .env 로 환경 변수 관리하기 (VITE) (0) | 2024.08.29 |
`JavaScript` 템플릿 리터럴 (Template Literal) (0) | 2024.08.11 |
JavaScript 실습 문제 - WalkingClass (0) | 2024.08.10 |