誰かがクッキーベースの認証がどのように機能するかを段階的に説明してくれますか?認証またはCookieに関係することは何もしていません。ブラウザは何をする必要がありますか?サーバーは何をする必要がありますか?何の順番で?どうすれば物事を安全に保つことができますか?
私はさまざまな種類の認証とCookieについて読んでいますが、2つを一緒に使用する方法の基本的な説明が欲しいです。
Cookieは基本的には辞書内の単なるアイテムです。各アイテムにはキーと値があります。認証の場合、キーは「ユーザー名」のようなもので、値はユーザー名になります。 Webサイトにリクエストを行うたびに、ブラウザはリクエストにCookieを含め、ホストサーバーはCookieをチェックします。そのため、認証はそのように自動的に行われます。
Cookieを設定するには、リクエスト後にサーバーが送信する応答に追加するだけです。ブラウザは、応答を受信するとCookieを追加します。
有効期限や暗号化など、Cookieサーバー側に設定できるさまざまなオプションがあります。暗号化されたCookieは、多くの場合、署名付きCookieと呼ばれます。基本的に、サーバーはディクショナリ項目のキーと値を暗号化するため、サーバーのみが情報を利用できます。したがって、Cookieは安全です。
ブラウザは、サーバーによって設定されたCookieを保存します。ブラウザがそのサーバーに対して行うすべてのリクエストのHTTPヘッダーに、Cookieが追加されます。 Cookieを設定するドメインのCookieのみを追加します。 Example.comはcookieを設定し、ブラウザのHTTPヘッダーにオプションを追加して、sub.example.comなどのcookieをサブドメインに送り返すことができます。ブラウザが別のドメインにCookieを送信することは受け入れられません。
私はこれが何年も遅れていることを知っていますが、コナーの答えを拡張し、議論にもう少し追加できると思いました。
誰かがクッキーベースの認証がどのように機能するかを段階的に説明してくれますか?認証またはCookieに関係することは何もしていません。ブラウザは何をする必要がありますか?サーバーは何をする必要がありますか?何の順番で?どうすれば物事を安全に保つことができますか?
ステップ1:クライアント>サインアップ
何よりも先に、ユーザーはサインアップする必要があります。クライアントは、ユーザー名とパスワードを含むHTTP要求をサーバーに送信します。
ステップ2:サーバー>サインアップの処理
サーバーはこのリクエストを受信し、パスワードをハッシュしてからユーザー名とパスワードをデータベースに保存します。このようにして、誰かがデータベースにアクセスしても、ユーザーの実際のパスワードは表示されません。
ステップ3:クライアント>ユーザーログイン
これでユーザーがログインします。ユーザーはユーザー名/パスワードを入力します。これは再びHTTP要求としてサーバーに送信されます。
ステップ4:サーバー>ログインの検証
サーバーはデータベースでユーザー名を検索し、指定されたログインパスワードをハッシュし、データベースで以前にハッシュされたパスワードと比較します。チェックアウトしない場合、 401ステータスコードを送信してリクエストを終了する でアクセスを拒否できます。
ステップ5:サーバー>アクセストークンの生成
すべてがチェックアウトされると、ユーザーのセッションを一意に識別するアクセストークンを作成します。サーバーでは、アクセストークンを使用して2つのことを行います。
以降、Cookieは、クライアントとサーバー間で行われるすべての要求(および応答)に添付されます。
ステップ6:クライアント>ページリクエストを行う
クライアント側に戻ると、ログインしています。クライアントが認証を必要とするページ(ログインする必要があるページ)をリクエストするたびに、サーバーはCookieからアクセストークンを取得し、それをチェックします。そのユーザーに関連付けられたデータベース内。チェックアウトすると、アクセスが許可されます。
これで開始できます。ログアウト時に必ずCookieをクリアしてください!
Cookieベースの認証
Cookieベースの認証は、これらの4つのステップで正常に機能します。
ブラウザは後続の各リクエストでこのセッションIDを送信し、このセッションIDに基づいてデータベースに対してセッションIDが検証されます。ウェブサイトはどのクライアントに属するセッションを識別し、リクエストにアクセスを許可します。
ユーザーがアプリからログアウトすると、セッションはクライアント側とサーバー側の両方で破棄されます。