[TIL]Backend Auth
インターンシップ1の承認手順
1.認証を実施する前にパスワードの暗号化を行う
1-1.暗号化ライブラリbcryptのインストール
pip install bcrypt
1-2.インストール後にpython interpriterを実行する
ライブラリの実行と導入
import bcrypt
1-3.暗号化
」bcryptの暗号化方法!
bcryptは
str
データを暗号化し、Bytes
データではない.したがって,暗号化の際にはバイト化が必要である.
Pythonでは、符号化
str
はバイト(進化)であり、復号Bytes
はstr
である.Encode、decodeでは「UTF-8」Unicode文字仕様を使用して、私たちが認識できる形式に変換します.
password = '1234'
hashed_password = bcrypt.hashpw(password.encode('utf-8'), bcrypt.gensalt())
print(hashed_password)
#b'$2b$12$YFs9rh.1LgJwZuf9ibyjpuLvBoCaGX0MzedFWF2Jo0zU3lMZurZ4a'
#암호화 된 비밀번호를 얻었다. data type은 bites
type(hashed_password)
# <class 'bytes'>
この暗号化方式は一方向暗号化であり,暗号化後に復号できない方式である.1-4.パスワードの確認
双方向確認はできませんが、bcryptのbcryptです.checkpw()メソッドでパスワードを確認できます.
new_password = '1234'
bcrypt.checkpw(new_password.encode('utf-8'),hashed_password)
#True
しかし、この方法にはルールがあります.bcrypt.checkpw()メソッドのカッコ(入力されたパスワード、保存された暗号化パスワード)に含まれる
データ型はすべて
Bytes
である必要があります.2.JWT認証ツールの実装
2-1.ライブラリのインストール
pip install pyjwt
2-2.python interpriterの実行
import jwt
2-3.tokenの作成
SECRET = 'secret' #'랜덤한 조합의 키' 예제이므로 단순하게 'secret'이라고 하겠습니다.
access_token = jwt.encode({'id' : 1}, SECRET, algorithm = 'HS256')
print(access_token)
#b'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6MX0.-xXA0iKB4mVNvWLYFtt2xNiYkFpObF54J9lj2RwduAI'
認証のためにjwttoken、access tokenと呼ばれるメディアを作成しました.このように発行されたトークンは再復号され、json形式でフロントエンドに送信される.
2-4.tokenの確認
次に、認証済みのユーザーのみがアクセスできるように、フロントエンドに格納されたタグをバックエンドに送信します.
私たちが発行したコインかどうかを確認しなければなりません.
この場合は双方向暗号化され,復号化できる.
header = jwt.decode(access_token, SECRET, algorithm = 'HS256')
print(header)
#{'id': 1}
decodeの結果は,符号化時に伝達されるヘッダ値{'id':1}である.Reference
この問題について([TIL]Backend Auth), 我々は、より多くの情報をここで見つけました https://velog.io/@hyoniii_log/TILBackend-Authテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol