<aside> 👉🏻 인증 인가는 한쪽 측면에서 담당하는 것이 아닌 프론트와 백엔드 간의 상호 작용입니다. 여기에서는 전체적인 인증, 인가가 아닌 “백엔드 엔지니어”가 인증 / 인가를 구현하기 위한 필수 요건 및 코드를 안내하는 자료입니다.
</aside>
인증 구현에 앞서, 개인정보의 보호를 위해 필수적으로 해야 하는 요소인 비밀번호 암호화를 진행합니다.
암호화를 위한 라이브러리 bcrypt 를 설치합니다. → Bcrypt 사이트
pip install bcrypt
python 인터프리터를 실행합니다.
실행하고 라이브러리를 임포트 합니다.
import bcrypt
bcrypt는 str
데이터가 아닌 Bytes
데이터를 암호화 합니다. 따라서 암호화시에 bytes화 해야합니다.
str
을 encode하면 bytes(이진화) 되고, Bytes
를 decode하면 str
화 합니다.본격적으로 bcrypt 라이브러리를 사용하겠습니다. 먼저 패스워드를 암호화 해보겠습니다.
password = '1234'
hashed_password = bcrypt.hashpw(password.encode('utf-8'), bcrypt.gensalt())
print(hashed_password)
b'$2b$12$YFs9rh.1LgJwZuf9ibyjpuLvBoCaGX0MzedFWF2Jo0zU3lMZurZ4a'
그렇다면 암호화된 데이터의 타입은 무엇일까요? hashed_password
의 타입은 어떻게 확인해볼 수 있을까요?
이렇게 암호화된 방식은 일방향 암호화 즉 복호화 할 수 없도록 암호화하는 방식입니다.
그렇다면 비밀번호를 확인 하는 작업은 어떻게 할 수 있을까요? 바로 bcrypt가 지원해줍니다.
new_password = '1234'
bcrypt.checkpw(new_password.encode('utf-8'),hashed_password)
True
bcrypt.checkpw() 메소드가 바로 그 일을 하고 있습니다.
Bytes
여야 합니다.