HTTP・HTTPS
ブラウザがサーバーへ依頼を送り、応答を受け取るHTTPと、その通信を暗号で保護するHTTPSを説明します。
通信、ブラウザ、認証、暗号の仕組みを、前提から説明します。初めて読む方は一覧の順に、知りたい言葉がある方は各記事から読み進められます。
ブラウザがサーバーへ依頼を送り、応答を受け取るHTTPと、その通信を暗号で保護するHTTPSを説明します。
URLを部品に分け、ドメイン・ホスト・オリジン・サイトがそれぞれ何を区切るかを具体例で説明します。
別サイトを開いただけで非公開情報を読まれないように、ブラウザが読み取りを制限する仕組みを説明します。
別オリジンの画面からAPIの応答を読むための許可、プリフライト、Cookie付き通信の条件を一つずつ説明します。
ブラウザに保存された値が、どの条件でサーバーへ送られるかを、各属性とログインの例から説明します。
ログイン後の複数の通信を同じ利用者に結び付ける方法と、セッションIDの発行・照合・失効を説明します。
誰の操作かを確かめる認証と、その人が対象データを扱ってよいか判断する認可を、請求書の例で区別します。
ユーザー名とパスワードをHTTPヘッダーで送るBasic認証を、Base64・HTTPS・ログアウトの違いから説明します。
パスワードを復元せずに照合する方法と、ソルト・計算コスト・専用ハッシュ関数の役割を説明します。
認証要素の違いと、SMS・認証アプリ・公開鍵を使うパスキーの仕組み、復旧時の注意点を説明します。
認証や権限の確認に使うトークンとAPIキーを、送信・検証・漏えい・失効の流れで説明します。
署名付きJWTの構造と、デコード・署名検証・クレーム検証の違いを、認証情報の受け取り側から説明します。
外部サービスへ権限を委譲するOAuthと、その上でログイン結果を確認するOIDCを、登場人物と通信の順序から説明します。
表現を変える、秘密を守って復元する、比較用の値を計算する、という三つの目的を具体例で区別します。
共通鍵・公開鍵・秘密鍵の役割と、暗号化、署名、鍵共有の違いを、送信者と受信者の動きで説明します。
内容の改ざんと発行元を検証する方法を、秘密鍵による署名と共通鍵によるMACの違いから説明します。
HTTPSの通信相手を確かめ、暗号化した通信を始める流れと、証明書・認証局・秘密鍵の役割を説明します。
APIキー・パスワード・秘密鍵を、保存・配布・使用・交換・失効まで一続きで管理する方法を説明します。
Cookie・localStorage・sessionStorageの保存範囲と送信方法を比較し、XSSが起きたときの影響を説明します。
ブラウザに読み込みや実行の制限を伝えるCSPを、ディレクティブ・nonce・ハッシュ・レポートの例で説明します。