웹사이트에서 유저가 누구인지 식별 할 수 있도록 하는 식별자를 생성하여 판단하는 것으로, 회원가입과 같은것을 통해서 인증을 할 수 있다
이때, 비밀번호 같은 경우는 데이터 베이스에 저장시에 개인정보를 암호화하여 복원 할 수 없도록 비밀번호를 관리 해야 한다
이 암호화 하는 것을 해싱이라고 한다
비밀번호를 암호화 할 때에는 단방향 해시의 방식을 이용해서 암호화 하게 되는데,
input 으로 암호를 설정하면 output 으로 암호화 하고, output의 정보로는 input을 알 수 없도록 암호화 하는 방식이 단방향 해시 방식이다
하지만, 암호화 방식이 input을 입력 할 때마다 바뀌는것이 아니기 때문에, 똑같은 input 값을 입력하면 똑같은 out이 출력된다
이 특징을 이용해서 input 값을 컴퓨터로 돌려서, output을 데이터화 해서 파는 불법적인 행위를 하는 사람이 생겼고, 이를 보완하기 위해서 Salting & KeyStretching 방식이 생김
Salting & KeyStretching 방식은 암호화 해야 하는 값에 salt 값을 붙여서 key를 늘리고, 암호화 하는 방법이다
유저가 비밀번호를 입력하면, salt 값(암호화 시켜주는 임의의 문자열)을 붙이고, 그 값을 단방향 해시 방식을 이용해서 암호화 하는 것이다
이 방식도 salt 값을 알고 있다면, 전처럼 암호화되는 값을 데이터화 해서 팔 수는 있다
하지만, salt 값을 일정 주기를 가지고 바뀌기 때문에 전보다는 훨씬 보안이 강해졌다
위의 그림 처럼 유저가 입력한 암호와, 랜덤으로 주어지는 salt 값이 hashing process를 거쳐 해싱된 값을 반환 해주는데, 해싱된 값에는 랜덤으로 주어졌던 salt 값이 붙어 있다
이유는, 나중에 암호가 맞는지 판독할 때 명시된 salt 값을 사용하여 판독하기 때문이다
위의 그림처럼 암호화 하는 과정에서 사용한 salt 값, 유저가 입력한 값을 사용해서 암호화 한 값을 다시 만들어 내고, 저장되어 있던 암호화된 값을 비교해서 통과 시켜줄 수 있다
사용자가 서버에 로그인 하면 해당 사용자가 맞는지 확인하는 과정이다
위에서 값을 비교해서 통과시켜 주는 과정이 인가
의 과정이라고 볼수 있다
인가를 하는 과정에서 매번 정보가 맞는지 보기 보다는 로그인이 이미 완료된 증표를 제공해서 인가를 할 수 있으며, 로그인을 한번 하면 제공되는 이 증표가 token 이다
token의 구조로는,
이렇게 3가지 이며, 로그인 한번을 하면 발급받은 토큰을 사용해서 인가를 해줄수 있다.