인증(Authentication), 인가(Authorization)

Olivia·2023년 5월 15일
0

[Web]

목록 보기
1/1

새로운 팀 프로젝트를 시작하게 되었는데 첫 회의에서 또 벙어리가 되었다..😭
모르는 용어 가득.. 모르는 기능 가득..
이렇게 또 모르는게 가득해버려서 공부할게 잔뜩 생겼다.

이번 팀 프로젝트는 회원가입과 로그인을 카카오를 이용해서 하기로 했는데,
OAuth는 들어봤는데 계속 인가라는 표현이 나왔다.
인가가 도대체 뭐지..
그래서 정리해본다.


인증과 인가란 무엇인가?

인증: 유저가 누구인지 확인하는 절차 (회원가입 로그인)
인가: 유저에 대한 권한 허락

인증과 인가는 어떤 사용자가 어떻게, 언제 서비스를 사용하는지 추적하기 위해 사용한다.

인증(Authentication)

  • 장치나 사용자를 식별하는 행위 (신분을 확인)
  • 예를 들어 사용자의 아이디와 비밀번호를 확인하는 절차
  • 인증을 하기 위해서는 사용자의 아이디비밀번호를 생성하는 기능이 요구

정보를 청보해서 통신을 보내는 방법

이번 프로젝트에서는 JWT를 이용해서 일정 시간동안 인가에 유효한 정보로 대체하는 방법을 사용하기로 했다.
회원가입 후 JWT를 이용한다고 하는데 도대체 JWT가 뭐지..?

JWT(Json Web Token)

정보를 비밀리에 전달하거나 인증할 때 사용하는 토큰으로 Json 객체를 이용한다.

클라이언트와 서버 사이 통신할 때 권한을 위해 사용하며, 주로 사용자의 인증 또는 인가 정보를 서버와 클라이언트 간 안전하게 주고받기 위해 사용한다.

보통 Authorization(인가) HTTP 헤더 값으로 Bearer + <토큰> 으로 값을 받아와 사용할 수 있다.

서버에는 토큰에 포함되어있는 서명 정보를 통해서 위변조 여부를 빠르게 검증할 수 있다.

토큰이 보내지는 방법

토큰은 요청 헤더의 Authorization: 에 담아져서 보내진다.
위의 Bearer은 바로 type에 해당한다.
토큰은 다양한 종류가 있기 때문에, 서버는 type에 따라 토큰을 다르게 처리해야한다.

Token 종류

간단하게 Basic, Bearer, Digest만 다루겠음

Basic

사용자의 아이디와 비밀번호를 Base64로 인코딩한 값을 토큰으로 사용한다.

Bearer

JWT나 OAuth에 대한 토큰을 사용한다.

Digest

서버에서 난수 데이터 문자열을 클라이언트에게 보낸다. 그럼 클라이언트는 사용자 정보등을 포함하는 해시값을 사용하여 응답한다.

JWT 구조

JWT는 header(헤더), payload(페이로드), signature(서명)으로 구성되며, ,로 구분된다.

헤더는 토큰의 유형과 서명 알고리즘에 명시된다.

헤더를 디코딩해보면

{
	"alg": "HS256",
  	"typ": "JWT"
}
``
  
  
  
  
  
  
  
  
  
  
profile
👩🏻‍💻

0개의 댓글

관련 채용 정보