dongwheekeem.log
로그인
dongwheekeem.log
로그인
TIL 14 | 인증 & 인가
dongwheekeem
·
2021년 10월 3일
팔로우
0
WeCode
web
0
TIL
목록 보기
14/23
인증은 무엇이고 왜 해야 하는가?
인증 (Authentication)
인증은 회원가입과 로그인을 의미한다.
인증은 우리 서비스를 누가 쓰는지, 어떻게 사용하는지, 추적이 가능하도록 하기 위해 필요하다.
인증에 피요한 것은 아이디, 비밀번호 등이 필요하다.
비밀번호, 바이오정보, 주민번호 등과 같은 주요 정보
는 법규상의 강제로 인해 따로 관리해야 한다.
비밀번호를 관리하는 방법
Hashing (사람이 알 수 없는 방법으로 만드는 것)
: hashing을 하기 때문에 사이트에서 비밀번호를 잊게 되면 기존 비밀번호를 못 찾고 새로 설정하도록 한다.
HTTPS 통신과 SSL을 통해 암호화하는 것
단방향 해쉬
복원이 불가능한 단방향 해쉬함수는 암호학적 용도로 사용된다.
해쉬값이 식별할 수 없는 값으로 나와서 당장은 완벽해보이지만 같은 알고리즘으로 다시 해싱하면 같은 결과가 도출되어 암호가 노출될 수 있는 위험이 있다. (이런 허점을 이용해서 가능한 경우의 수를 모두 해쉬값으로 만들어 판매하는 서비스도 존재)
이러한 허점을 보완하고자
salting
과
key stretching
이 생겼다.
Salting & Key Stretching
비밀번호에 솔트값(임의의 스트링)을 추가해서 해쉬값으로 변경한다.
비밀번호 생성 과정 : 비밀번호에 임의의 솔트값을 합쳐서 hashing 과정을 여러번 거쳐서 암호화하여 해쉬 값을 만들고 그 앞에 솔트 값을 붙인다.
비밀번호 확인 과정 : 사용자의 아이디와 비밀번호를 합쳐 db에서 솔트 값을 갖고 와서 모두 합쳐 hashing을 하여 해쉬값이 같은지 확인한다.
bcrypt
위에 언급한 개념들을 실제로 적용하기 편하게 해주는 대표적인 라이브러리다.
Algorithm : 어떤 알고리즘으로 돌렸는지
Algorithm options : 몇 번 hashing 했는지
Salt : 솔트 값
Hashed 패스워드 : 암호화된 비밀번호
JWT (JSON Web Token)
로그인을 유지하기 위해서 토큰을 발급해줘서 받은 토큰을 쿠키, 세션, 로컬스토리지 등에 저장해놔서 로그인 상태를 유지한다. (백엔드가 토큰을 발급해주고, 프론트가 발급된 토큰을 관리한다.)
토큰은 메타 데이터로 헤더에 들어가게 된다.
헤더 : 제이슨 웹 토큰
내용 : 몇번째 유저인지에 대한 정보 (유저 ID & expired 시간이 포함되어 있음 : 그렇기 때문에 시간이 초과되면 새로운 JWT가 발급된다)
서명 : 시크릿키
dongwheekeem
실패란 못하는 것이 아니라 하지 않았기 때문에 생긴 결과물이다
팔로우
이전 포스트
TIL 13 | React State/Props
다음 포스트
TIL 15 | Code Kata 괄호 문제
0개의 댓글
댓글 작성