TIL. 8認定&承認
認証
簡単に言えば、ウェブサイトでユーザーを識別することです.
認証プロセスに必要
パスワードの暗号化
1)ハッカーが侵入した場合、パスワードがそのまま露出する
2)外部ハッカーでなくても,内部開発者や他の人が見ることができる.
1)ハッカーが侵入した場合,パスワードは露出しない.
2)内部開発者も不明である.
たんほうこうハッシュ
Bcrypt
一方的なハッシュにはいくつかの弱点がある.bcryptは、このような状況を防止するために
Salting
およびこれは、
Key Stretching
を提供する典型的なライブラリです.ハッシュ値を計算する方法は、実際のパスワードのほかにランダムなデータを追加することもできます.
は、一方向ハッシュ値を計算した後、そのハッシュ値をハッシュし、それを繰り返すことを意味する.
復号化
hashed_password = bcrypt.hashpw(password.encode('utf-8'), bcrypt.gensalt())
encode:stringタイプをbytesタイプに変換-エンコーディングdecode:バイトタイプをstringタイプに変換-復号化
<Bcrypt形式画像>
暗号化パスワードが一致していることを確認する方法
bcrypt.checkpw(request_password.encode('utf-8'),hashed_password)
データベースに復号されたパスワードを表示すると、上の画像のようにbcryptパスワードが格納されます.要求されたパスワードが入力された後、上記のコードが入力されたときにハッシュ前のパスワードと同じであれば、True
、そうでなければFalse
が出力される.権限
これは、ログインした人が追加サービスを使用するときにユーザーを許可しているかどうかを簡単に確認するステップです.
JWT (Json Web Token)
権限のあるプレイヤーかどうかを確認するために、コインを付与します.
トークンを取得するには、DBのSECRET KEYを理解して接続する必要があります.
トークンの作成
access_token = jwt.encode({'id' : 1}, SECRET_KEY, algorithm = 'HS256')
ログインに成功すると、 accesstokenという暗号化されたユーザ情報をrequestに送信します.#EX)
POST /auth HTTP/1.1
Host: localhost:5000
Content-Type: application/json
{
"username": "joe",
"password": "pass"
}
HTTP/1.1 200 OK
Content-Type: application/json
{
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZGVudGl0eSI6MSwiaWF0IjoxNDQ0OTE3NjQwLCJuYmYiOjE0NDQ5MTc2NDAsImV4cCI6MTQ0NDkxNzk0MH0.KPmI6WSjRjlpzecPvs3q_T3cJQvAgJvaQAPtk1abC_E"
}
上記のトークンはサーバ上にあります アクセスポイントを復号することによって、対応するユーザ情報が得られる.
トークン復号
jwt.decode(access_token, SECRET, algorithm = 'HS256')
上記のように{'id': 1}
を返す値を入力します.
コインでプレイヤーを逆確認できます.
JWTとは,名前の通り,ユーザ情報を含むJSONデータを暗号化してクライアントとサーバとの間で交換するものである.
JWTは3種類からなる。
1)タイトル(タイトル)
access_token = jwt.encode({'id' : 1}, SECRET_KEY, algorithm = 'HS256')
#EX)
POST /auth HTTP/1.1
Host: localhost:5000
Content-Type: application/json
{
"username": "joe",
"password": "pass"
}
HTTP/1.1 200 OK
Content-Type: application/json
{
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZGVudGl0eSI6MSwiaWF0IjoxNDQ0OTE3NjQwLCJuYmYiOjE0NDQ5MTc2NDAsImV4cCI6MTQ0NDkxNzk0MH0.KPmI6WSjRjlpzecPvs3q_T3cJQvAgJvaQAPtk1abC_E"
}
jwt.decode(access_token, SECRET, algorithm = 'HS256')
2)コンテンツ(ペイロード)
Reference
この問題について(TIL. 8認定&承認), 我々は、より多くの情報をここで見つけました https://velog.io/@kim-hoontae/TIL.-8-인증-인가テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol