#34-認定&承認2
3362 ワード
権限
ユーザがサーバにログインした後,そのユーザが正しいかどうかを確認するプロセスが承認である.
認証が必要な理由はHTTP特性です.
HTTP特性
リクエスト/レスポンス-リクエストとレスポンス
無状態の性質-保存しない性質
ユーザーがログインしている場合、サーバはどのようにログインしていることを知っていますか?
確認のためにヘッダーにメタデータを送ります.
このメタ情報はJSON Web Token-別名
JWT
である.トークンのセキュリティを強化する方法
発行されたトークンが特定のipでのみ使用可能であることを制限する
ブラウザの認証を使用して他のコンテンツを検証
あるいはロケをします.
一度に認められたコインは使い捨てに制限されています
ログインごとにトークンが更新されます
JWT(JSON Web Tokens)
ユーザーのログインに成功すると、 accesstokenという暗号化されたユーザ情報をrequestに送信します.
// 유저 로그인:
POST /auth HTTP/1.1
Host: localhost:5000
Content-Type: application/json
{
"username": "joe",
"password": "pass"
}
// access token:
HTTP/1.1 200 OK
Content-Type: application/json
{
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZGVudGl0eSI6MSwiaWF0IjoxNDQ0OTE3NjQwLCJuYmYiOjE0NDQ5MTc2NDAsImV4cCI6MTQ0NDkxNzk0MH0.KPmI6WSjRjlpzecPvs3q_T3cJQvAgJvaQAPtk1abC_E"
}
その後、サーバは アクセスポイントを復号することによって、対応するユーザ情報が得られる.例えば
access token in
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZGVudGl0eSI6MSwiaWF0IjoxNDQ0OTE3NjQwLCJuYmYiOjE0NDQ5MTc2NDAsImV4cCI6MTQ0NDkxNzk0MH0.KPmI6WSjRjlpzecPvs3q_T3cJQvAgJvaQAPtk1abC_E
復号化には、次の情報が得られます:{
user_id = 1
}
得られたプレイヤーIDを解読することで、そのプレイヤーが誰であるかを知ることができる.これらのプログラムの目的は.
そのプレイヤーにログインするたびにログインさせないようにすることです.
accesstokenを生成する方法には多くの種類があり、その中で最も広く使用されている技術の一つは
JWT(JSON Web Tokens)
である.JWTとは,名前の通り,ユーザ情報を含むJSONデータを暗号化してクライアントとサーバとの間で交換するものである.
JWTの構造
header
ex) {“alg”: “HS256”, “typ”: “JWT”}
payload
公開クレーム
ex) { “user-id” : 1, “exp”: 1539517391 }
signature
JWTが元のバージョンと同じかどうかを確認するときに使用する部分
BASE 64 URLとして符号化されたヘッダと負荷、およびJWTsecret(個別に生成)をヘッダに指定された暗号アルゴリズムで暗号化して伝送する(復号可能)
現在のエンドでJWTがバックエンドAPIサーバに送信されると、サーバは送信されたJWTの署名部分を復号し、サーバが生成したJWTが正しいかどうかを確認します.
注意:ヘッダと負荷はBASE 64で符号化されており(暗号化されていない)、誰もが元のファイルを見ることができるため、個人情報を含めることはできません.
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6Mn0.TqNLDeEa gjSeV6UozaejHx-xOWuzu_6XPHFRvW76Ong
Token vs ID/PW
パフォーマンス:
クライアントストレージ
承認プロセス
認証プロセスの使用 アクセスポイントを生成します.
アクセスポイントには、ユーザ情報を確認できる情報が含まれているはずです.
ex) user id
プレイヤーがリクエストを送信すると 追加accesstoken送信.
サーバが提供する アクセスポイントを復号します.
データを復号してユーザidを取得する.
useridを使用して、データベースでユーザーの権限を検証します.
ユーザーは、リクエストを処理するのに十分な権限を持っています.
ユーザに権限がない場合は、Unautorzed Response(401)または他のエラーコードが送信される.
Reference
この問題について(#34-認定&承認2), 我々は、より多くの情報をここで見つけました https://velog.io/@rosarang/TIL-34-인증-인가-2テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol