JWTとは?
4470 ワード
JWT(JSON Web Token)とは何ですか?
JSON Web Tokenの略で、JSONオブジェクトを使って確実に情報を伝達するWeb標準です!
例えば、ログイン機能を考慮すると、ユーザがログインした後、後で会員のみがアクセスできるサービス領域でアイデンティティを確認するために、認証会員のトークンをサーバに渡すことができる.
なぜ認証が必要なのですか?
フロントエンドの観点から,認証とはユーザの登録,登録などの導入部分を指す.逆に,サーバ側の観点から,すべてのAPI要求に対してユーザ確認を行う操作である.
token_receive = request.cookies.get('mytoken')
ユーザAとユーザBがアプリケーションを使用すると仮定すると、2つのユーザの基本情報は異なり、持つコンテンツも異なる.したがって,サーバは,A,Bが要求したときに誰が要求したのかを明らかにすべきである.できなければ、自分の情報が他人に漏れる最悪の事態が発生する.したがって,アプリケーション(フロントエンド)は,自分が誰であるかを知る手がかり(トークン付きCookie)をサーバに送信する必要があり,サーバはこれらの手がかりを把握し(jwtを用いて復号する),要求ごとにデータを送信する必要がある.現在、モバイルやWebサービスで最も一般的な通信方式はHTTP通信である.HTTP通信は,応答後に接続を切断すると,過去の情報を全く含まない.つまり、現在送信されているHTTPリクエストは、前回私の情報を含んだHTTPリクエストとは全く関係ありません.したがって,各HTTPリクエストには,エージェントが誰であるかに関する情報が必要である(認証が不要であれば不要である可能性がある).
セッションとCookieメソッド
見送る.Webサーバは、セッションリポジトリからCookie(セッションID)を受信し、保存した情報と一致させて認証を完了する.
セッションはサーバが所有する情報であり,Cookieはユーザに送信するセッションを開く鍵(SESSION ID)である.Cookieのみを使用して認証を行うことは、サーバ上のリソースを使用しないことを意味し、クライアントが情報の検証を担当することを意味します.これでHTTPリクエストが盗まれると、略奪されてしまいます.したがって、カートや自動ログインの設定がセキュリティに関係していない場合は、非常に役立ちます.
その結果、セッションを使用してサーバに検証を担当させます.△ユーザーがハッカーに攻撃されるよりも、サーバがハッカーに攻撃されるほうがずっと難しい!
長所
セッション/クッキー方式は基本的にクッキーを媒介として認証を行う.したがって,Cookieを含むHTTP要求が途中で暴露されたとしても,Cookie自体(セッションID)には何の有効値もない.(重要な情報はサーバセッションにあるため、セッションIDには何の意味もありません)これはかなり安全に見えます.
ユーザAは1番、ユーザBは2番であり、このように固有のID値が発行される.これにより、サーバはクッキー値を受信すると、会員情報をいちいち表示する必要がなく、どの会員を表示することができ、サーバ上のリソースにアクセスしやすくなります.
短所
長所1ではビスケットを奪われても安全だという話が出ていますが、一つ問題があります.AユーザのHTTP要求がBユーザ(ハッカー)によってキャプチャされた場合、その中のCookieも完全に盗むことができる.また,Bユーザが盗んだクッキーを用いてHTTPリクエストを送信すると,サーバのセッションリポジトリがAユーザと誤認し,誤ってメッセージ(セッションハイジャック攻撃と呼ぶ…!)を送信する.
解決策
サーバはセッションストレージを使用するため、サーバは追加のストレージスペースを必要とし、負荷が増加します.
JWT方式
長所
短所
すでに発行されているJWTには取り返しがつかない.セッション/Cookieの場合、Cookieが悪用された場合、セッションをクリアできます.ただしJWTは一度リリースすれば有効期間が終わるまで使用できます.したがって,悪意のあるユーザは有効期間が過ぎる前に,興奮して情報を盗むことができる.
解決策
ウェブページの情報は限られている.前述したように、Payloadは単独で暗号化されないので、復号すれば誰でも情報を確認することができます.(セッション/Cookieモードでは、ユーザのすべての情報がサーバのリポジトリに安全に保存されます.)したがって,ユーザの重要な情報をウェブページに置くことはできない.
これはJWTの道です.JWTの長さは、セッション/Cookie方式よりも長い.そのため、検証が必要なリクエストが多ければ多いほど、サーバのリソースが浪費されます.
コメントサイト
Reference
この問題について(JWTとは?), 我々は、より多くの情報をここで見つけました https://velog.io/@uvula6921/JWT란テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol