⛵ 항해99/TIL · WIL ✏️

[TIL] 2023.09.16 - 인증/인가(토큰, JWT)

hhhhy 2023. 9. 17. 17:16

 인증 

  • 인증은 사용자를 확인하는 프로세스
  • 주요 목적은 사용자가 자신이 맞는지를 확인하고, 로그인한 사용자를 식별하는 것
  • 일반적으로 사용자 이름과 비밀번호, 토큰(JWT), 세션 등을 사용하여 인증을 수행
  • 주로 로그인 과정에서 사용되며, 사용자의 신원을 확인하여 액세스 권한을 부여하거나 거부

 

 인가 

  • 인가는 사용자에 대한 권한을 관리하고, 특정 자원 또는 서비스에 대한 접근을 허용 또는 거부하는 프로세스
  • 사용자가 로그인한 후에도 특정 자원에 접근할 수 있는지 여부를 결정
  • 주로 권한 부여 및 접근 제어에 사용되며, 사용자의 역할과 권한에 따라 리소스에 대한 권한을 관리

 

 토큰 - JWT (JSON Web Token) 

  • WT는 웹 애플리케이션 간에 정보를 안전하게 전송하기 위한 표준 방식 중 하나로, JWT는 JSON 형식으로 정보를 표현하며, 서명(signature)을 통해 정보 무결성을 검증
  • 주로 사용자 인증에 사용되며, 사용자에 대한 정보를 암호화하고 전송하는 데 사용됨
  • JWT는 클라이언트와 서버 간의 상태를 저장하지 않기 때문에 확장 가능하고 상태가 없는(stateless) 방식으로 인증을 처리함

 

1) 로그인/회원가입 시 토큰 인증

 

2) 인가(Authorization) 필요한 API 요청/응답

 

 Refresh Token 

  • 보안 강화!!!
  • 리소스 접근 인가를 받기 위해 사용되는 토큰을 Access Token 이라고 부름
  • Access Token의 만료기간을 길게 잡고 인증상태를 오래 가져갈 경우 서버 부담은 줄어드나 보안성(탈취 당할 경우)에 허점이 있음
  • 인증 보안이 중요한 서비스의 경우 인증 시 2개의 토큰 (Access Token, Refresh Token)을 발급하고 Access Token의 기간은 30분 정도로 짧게 가져 가고, Refresh Token은 1~2주 정도로 길게 잡는 경우가 많음
  • 이 경우 서버에서는 Access Token이 만료되었을 때 Refresh Token 이 유효한 상태면 새로운 Access Token을 클라이언트에 발급해주고 인증상태를 유지할 수 있도록 하고, Refresh Token 만료 시 다시 로그인하라는 메시지를 응답!