230620_ 인증과 인과

hoy_·2023년 6월 20일
0

Today, I Learned

목록 보기
22/36

1. 오늘의 일정

  1. Spring 숙련




2. 배운 내용

  1. 인증과 인가
  • 인증(Authentication)
    • 인증은 해당 유저가 실제 유저인지 인증하는 개념이다.
    • 스마트폰에 지문인식, 이용하는 사이트에 로그인 등과 같이 실제 그 유저가 맞는지를 확인하는 절차.
  • 인가(Authorization)
    • 인가는 해당 유저가 특정 리소스에 접근이 가능한지 허가를 확인하는 개념이다.
    • ex) 관리자 페이지-관리자 권한

  • 우리가 자주 하는 로그인은 인증
    회원/비회원 여부에 따라 다른 권한을 받는 것이 인가


  1. 인증의 방식

2-1. 쿠키-세션 방식의 인증

  • 쿠키-세션 방식은 서버가 ‘특정 유저가 로그인 되었다’는 상태를 저장하는 방식이다.
    인증과 관련된 최소한의 정보를 저장해서 로그인을 유지시킨다는 개념.

  • 작동 방식
    1. 사용자가 로그인 요청을 보냄
    2. 서버는 DB의 유저 테이블에서 아이디와 비밀번호를 대조함
    3. 정보가 일치한다면 인증을 통과한 것으로 보고 세션 저장소에 해당 유저가 로그인 되었다는 정보 추가
    4. 세션 저장소에서 유저의 정보와 관련 없는 난수, session-id를 발급
    5. 서버는 로그인 요청 응답으로 session-id를 반환
    6. 클라이언트는 session-id를 쿠키에 보관, 앞으로의 요청마다 세션아이디를 같이 보냄 (주로 HTTP header)
    7. 클라이언트의 요청에서 쿠키를 발견했다면 서버는 세션 저장소에서 쿠키를 검증
    8. 만약 유저정보를 받아왔다면 이 사용자는 로그인이 되어있는 상태, 로그인 된 유저에 따른 응답을 내어줌

2-2. JWT 기반 인증

  • JWT(JSON Web Token)란 인증에 필요한 정보들을 암호화시킨 토큰을 의미한다.
  • JWT 기반 인증은 쿠키/세션 방식과 유사하게 JWT 토큰(Access Token)을 HTTP 헤더에 실어 서버가 클라이언트를 식별한다.

  • 작동 방식
    1. 사용자가 로그인 요청을 보냄
    2. 서버는 DB의 유저 테이블에서 아이디와 비밀번호를 대조함
    3. 정보가 일치한다면 인증을 통과한 것으로 보고 유저의 정보를 JWT로 암호화 해서 내어줌
    4. 서버는 로그인 요청의 응답으로 jwt 토큰을 반환
    5. 클라이언트는 그 토큰을 저장소에 보관하고 앞으로의 요청마다 토큰을 같이 보냄
    6. 클라이언트의 요청에서 토큰을 발견했다면 서버는 토큰을 검증
    7. 로그인 된 유저에 따른 응답을 내어줌



profile
배우는 사람

0개의 댓글