유저의 아이디와 비번을 확인하는 절차.
1. 유저의 아이디, 비밀번호 생성
2. 유저의 비밀번호 암호화하여 DB에 저장.
3. 로그인 -> 아이디, 비밀번호 입력
4. 유저가 입력한 아이디, 비밀번호는 암호화 시켜 DB의 암호화된 비밀번호와 비교
5. 아이디, 비멀번호가 일치하면 access token을 client에 전송
6. 로그인 성공 후 access token을 header에 첨부하여 request를 server에 전송함으로 매번 로그인을 할 필요가 없다.
유저의 개인정보를 노출시키지 않도록 암호화하여 DB에 저장한다.
비밀번호 암호화에는 단방향 해쉬 함수(one-way hash function)가 일반적으로 쓰인다.
단방향 해시 함수는 원본 메시지를 변환하여 암호화된 메시지인 다이제스트(digest)를 생성한다. 원본 메시지를 알면 암호화된 메시지를 구하기는 쉽지만 암호화된 메시지로는 원본 메시지를 구할 수 없어서 단방향성(one-way) 이라고 한다.
Salting과 Key Stretching을 구현한 해쉬 함수중 가장 널리 사용되는 것으로 암호화 하기위한 라이브러리
* 단방향 해쉬 함수의 취약점들을 보안하기 위해 일반적으로 2가지 보완점
1. Salting
: 실제 비밀번호 이외에 추가적으로 랜덤 데이터를 더해서 해시값을 계산하는 방법.
2. Key Stretching
: 단방향 해쉬값을 계산 한 후 그 해쉬값을 또 또 해쉬 하고, 또 이를 반복하는 것을 말한다.