인증과 인가

majungha·2023년 4월 11일
1

메모

목록 보기
28/57

오늘의 공부 👍

오늘은 인증과 인가에 대해서 알아보려고 합니다.

📝 인증 ( authentication )


  • 유저가 누구인지 확인하는 절차, 회원가입과 로그인 등이 있습니다.
  • 토큰을 받아오는 과정입니다.
  • 로그인 API를 만들 때 사용합니다.

▷ 토큰 기반 인증 시스템(JWT)

  1. 유저가 아이디와 비밀번호로 로그인을 한다.
  2. 서버에서 해당 계정 정보가 있는지 확인한다.
  3. 계정 정보가 있다면, 서버에서 유저에서 토큰(accesstoken )을 발급해 준다.
  4. 클라이언트에서 토큰을 저장하고, 서버에 요청할 때마다 요청과 함께 토큰을 함께 전달한다.
  5. 서버는 토큰이 맞는지 확인하고, 요청에 응답한다.

▷ JSON Web Token

누구든지 열어볼 수 있기에 많은 데이터를 저장하지 않는 게 좋습니다.

  • .으로 구분되는 Header, Payload, Signature의 3가지 문자열로 되어있다.
    • 헤더 ( Header )
      • 토큰의 타입과 해싱 알고리즘이라는 두 가지 정보를 담고 있다.
    • 내용 ( Payload )
      • 토큰에 담을 정보가 들어간다.
      • 담는 정보의 한 조각은 name/value의 한 쌍으로 이루어진 Claim이라고 부른다.
    • 서명 ( Signature )
      • Header의 인코딩 값과 Payload의 인코딩 값을 합친 후 주어진 비밀키로 해싱(hashing)하여 생성한다.

📝 인가 ( authorization )


  • 로그인이 필요한 서비스들을 이용할 때 해당 유저임을 확인하는 것입니다,
  • 토큰을 확인하는 과정입니다.
  • 예를 들어 프로필 정보 조회 API 등에서 사용할 수 있습니다.
  • 로그인 한 사람만 본인의 프로필을 조회할 수 있기에 토큰( accesstoken )을 통해 인가를 받아야 한다.
  1. 사용자의 인증이 필요한 경우에 클라이언트는 발급받은 JWT를 Requet Header(HTTP Header)에 실어 같이 보내준다.
  2. 백엔드에서는 JWT를 받고 Guard를 통해 JWT Strategy를 실행한다.
  3. JWT를 복호화 한 후에 원하는 API가 수행되고, 응답된다.

출처 및 참고
코드캠프

profile
개발자 블로그 / 항상 겸손한 자세로 배우면서 성장하자 할 수 있다!

0개의 댓글