구분 | 의미 |
---|---|
인증(Authentication) | - 해당 User가 실제 User인지 인증하는 개념 - 스마트폰 지문인식, 사이트 로그인 등 |
인가(Authorization) | - 해당 User가 특정 Resource에 접근가능한지 허가를 확인하는 개념 - 관리자페이지, 관리자권한 등 |
Spring
에서 인증&인가 → Spring Security
Server - Client 구조
Http
통신 프로토콜 사용 → 비연결성(Connectionless) + 무상태(Stateless)
위의 두가지 특성때문에 url을 계층적으로 설계함
📍 비연결성 (Connectionless)
- Server와 Client가 연결 ❌
- Resource를 절약하기 위함
- 실제서버 ; 하나의 Request에 하나의 Response를 내보내고 연결을 끊음 ⭐️
📍 무상태 (Stateless)
- Server가 Client 상태를 저장 ❌
- Resource를 절약하기 위함
- 실제서버 ; Client가 직전에, 그 전에 어떤 Request를 보내는지 알지못함 ⭐️
📌 쿠키-세션 인증방법
: Server가 특정 User가 로그인했다는 상태를 저장하는 방식
인증과 관련된 약간의 정보만 Server가 가지고 있음
User의 인증과 관련된 최소한의 정보를 저장 → 로그인유지
1. User → login Request
2. Server가 DB User 테이블에서 Id/Pw 대조
3. 정보일치 → 인증통과 → 세션저장소에 해당 User login 정보 저장
4. 세션저장소 → User 정보와 관련성 없는 난수 session-id 발급
5. Server → login Response로 session-id를 보냄
6. Client는 session-id를 쿠키저장소에 보관 → Request 보낼 때 같이 전송
(HTTP Header)
7. 쿠키저장소에 session-id 저장되어 있는 Request → Server는 세션저장소에서 쿠키검증
8-9. login 된 User에 따른 Response를 내어줌
📌 JWT(JsonWebToken)기반 인증방법
: 인증에 필요한 정보들을 암호화시킨 token
JWT token(Access Token) → HTTP Header에 실어 Server가 Client 식별
Refresh Token
, Access Token
분리 → 높은 보안성과 편의성을 가져감
.
을 통해 세 부분으로 나뉘어짐
1. User → login Request
2. Server → DB User 테이블에서 Id/Pw 대조
3. 정보일치 → 인증통과 → 해당 User 정보 JWT로 암호화해서 내보냄
4. Server → login Response로 JWT Token을 보냄
5. Client는 JWT Token을 저장소에 저장 → Request마다 같이 내보냄
6. Client Request에서 Token 발견 → Server는 Token 검증
7. 검증 후, login 된 User에 따른 Response를 내어줌