Stack Map新人 Web エンジニアの地図

「だれか」を確かめる認証と、「してよいか」を決める認可。ログインまわりは、間違えたときの事故がいちばん大きい所です。
仕組みを押して確かめながら、Laravel での守り方まで見ていきます。

認証と認可(だれか・してよいか)

よく混ざる 2 つの言葉です。失敗したときの状態コードも違います(Web の仕組み「状態コード」)。似た言葉の違いはセキュリティのタブへ。

空港でたとえると、パスポートで本人を確かめるのが認証、搭乗券でどの便に乗れるかが決まるのが認可です。考え方のヒント

パスワードの保存

パスワードは、データベースが漏れても元に戻されない形で保存します。下ほどよい保存のしかたです。

    体験: ソルトの効き目

    2 人が同じパスワードを使っているとします。SHA-256 で計算して比べます(本物の保存は Argon2id や bcrypt。ここではソルトの効き目だけを見せています)。

    Laravel では

    セッションとトークン

    ログインしたあと「この人はログイン中」をどう覚えるかには、3 つの形があります。Laravel の画面は Cookie のセッション、API は Sanctum のトークンが基本です。Cookie の仕組みはWeb の仕組みへ。

    体験: JWT を分解して読む

    作り物の JWT です。ボタンで中身を書き換えると、サーバーの確かめ(本物の HMAC-SHA256 で計算)がどう変わるかが見えます。体験用の鍵は stack-map-demo-secret です。本物の鍵は、決して人に見せません。

    トークン(3 つの部分を「.」でつないだ文字列)

    ① ヘッダー
    署名のやり方(alg)など
    ③ 署名
    ①と②を、秘密の鍵で計算したもの

    ①と②は Base64URL で並べただけなので、だれでも元の文字に戻して読めます。署名で分かるのは「書き換えられていないか」だけです。

    出典: RFC 7519(JSON Web Token)・RFC 8725・OWASP「JSON Web Token Cheat Sheet」

    「Google でログイン」の中身(OAuth 2.0 と OpenID Connect)

    アプリは利用者のパスワードを一度も見ずに、「だれか」を知ります。いま勧められている形は「認可コード+PKCE」です(RFC 9700。2025 年 1 月)。番号か「次へ」で 1 歩ずつ進めます。

      Laravel では(Socialite)

      2 段階認証(多要素認証)とパスキー

      種類のちがう 2 つ以上の要素を組み合わせると、パスワードが漏れても入られにくくなります。ただし、方法によってフィッシング(偽のサイト)への強さが大きく違います。

      体験: 偽のサイトで試す

      認可の形

      「してよいか」の決め方には、3 つの考え方があります。実際は組み合わせて使います。

      体験: 認可チェッカー

      開発部の社員 A が出した「打刻の修正申請」を、だれが何をできるか(作り物の決まり)。マスを押すと、決め手が出ます。

      出典: OWASP「Authorization Cheat Sheet」

      よくある穴

      ログインまわりで、実際によく見つかる穴と守り方です。

      AI 時代AI に権限を渡すとき

      AI エージェントは、あなたの代わりにメールを読み、ファイルを触り、API を呼びます。「だれの権限で、何をしてよいか」は、人のログインと同じかそれ以上に大事です。くわしくはリスクとAI と開発のタブへ。

      ログインまわりのチェックリスト

      ログインや権限にかかわる変更を出す前に、確かめたものに印を付けてください(この端末にだけ保存されます)。