1 인증과 인가

구분의미
인증(Authentication)- 해당 User가 실제 User인지 인증하는 개념
- 스마트폰 지문인식, 사이트 로그인 등
인가(Authorization)- 해당 User가 특정 Resource에 접근가능한지 허가를 확인하는 개념
- 관리자페이지, 관리자권한 등
  • Spring에서 인증&인가 → Spring Security

2 인증의 방식

1️⃣ 웹 어플리케이션인증 특수성

  • Server - Client 구조

  • Http 통신 프로토콜 사용 → 비연결성(Connectionless) + 무상태(Stateless)

  • 위의 두가지 특성때문에 url을 계층적으로 설계함

    • (/api/mallang/1)
📍 비연결성 (Connectionless)
	- Server와 Client가 연결 ❌
    - Resource를 절약하기 위함
    - 실제서버 ; 하나의 Request에 하나의 Response를 내보내고 연결을 끊음 ⭐️

📍 무상태 (Stateless)
	- Server가 Client 상태를 저장 ❌
    - Resource를 절약하기 위함
    - 실제서버 ; Client가 직전에, 그 전에 어떤 Request를 보내는지 알지못함 ⭐️

2️⃣ 쿠키-세션 인증방법

📌 쿠키-세션 인증방법 : 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를 내어줌

3️⃣ JWT기반 인증방법

📌 JWT(JsonWebToken)기반 인증방법 : 인증에 필요한 정보들을 암호화시킨 token

  • JWT token(Access Token) → HTTP Header에 실어 Server가 Client 식별

  • Refresh Token, Access Token 분리 → 높은 보안성과 편의성을 가져감

  • . 을 통해 세 부분으로 나뉘어짐

    • HEADER
    • PAYLOAD (→ User data가 들어있는 부분)
    • VERIFY SIGNATURE
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를 내어줌
profile
🐱Sunyeon-Jeong, mallang developer🐰

0개의 댓글