ログインの裏側に通行証があった話


こんにちは! エムシーです!
「ログインできた」と出れば、あとは何でもできる。
僕はそう思っていました。8章を読んで、その思い込みは崩れました。
今回は、ログイン画面の裏側をのぞいた話です。
出てきたのは、会員証と通行証と見張り役みたいなものでした。
パソコンに自信がない方に読んでほしい記事です。僕が知らなかったことの記録です。
会員証と 部屋の判定は別だった
教材はまず、認証と認可の違いから始まりました。
認証(オーセンティケーション)は「あなたは誰か」を確かめる本人確認でした。
認可(オーソライゼーション)は、何をしてよいかを決める権限の判定です。
僕はこの2つを、同じものだと思っていました。
教材では、認証を「会員証の提示」、認可を「この部屋に入れるかの判定」と例えていました。
会員証なら、僕のスマホの中にもいくつかあります。
ログインできても権限がなければ、削除などはできない作りがよくあるそうです。
ログインできたら何でもできると勘違いしていました。
ログインすると 通行証がもらえる
Supabase(スーパベース)は、認証とデータベースをまとめて提供してくれる
クラウドサービスでした。2つまとまっていると、ありがたいです。
ログインに成功すると、JWT(ジェイ・ダブリュー・ティー)という通行証が発行されます。
教材の言葉では「本人確認済みの通行証」という表現でした。
JWTは、Header・Payload・Signatureの3つでできています。
Signature(シグネチャー)は、書き換えられていない証明の署名です。
署名で守られていると知って、少し安心しました。
「Googleでログイン」の裏側では、OAuth(オーオース)という仕組みが動いていました。
「いつも押していたあのボタンの裏で そんなことが・・・」
OAuthを使うと、使う人は新しいパスワードを覚えずに済みます。
作る人は、パスワード管理の責任が減るそうです。
データは Excelの表みたいに持つ
RDB(アール・ディー・ビー)は、Excelの表のように行と列でデータを保存します。
Excelなら、僕も少しだけ分かります。
そのデータは、SQL(エスキューエル)という言語で操作します。
また新しい言語が出てきました・・・
基本の操作は、作る・読む・直す・消すの4つ。
それぞれの頭文字をとってCRUD(クラッド)と呼ぶらしく、日本語なら覚えられます。
SQLでは、それぞれINSERT・SELECT・UPDATE・DELETEという指示になります。
教材の例は、家計簿の表から自分の記録だけを取り出すSELECTの1行でした。
家計簿なら、なんとかイメージができそうです。
守りは データベース側でかける
RLS(アール・エル・エス)は、ルールをデータベース側で強制する仕組みでした。
そのルールは「このデータは特定の人にしか見られない」という仕組みです。
画面側で他人のデータを隠すだけでは、守りきれない場合があるそうです。
直接データベースにアクセスされると、中身が見えてしまいます。
「見えないようにしただけでは 守れないのか・・・」
RLSのRはRow(ロウ=行)で、表の1行ごとに見られる人を決めます。
守りは、画面よりも奥でかけるものでした。
公開の前に 名前の決まりがあった
Vite(ヴィート)では、環境変数の名前の先頭にVITE_を付ける決まりがありました。
先頭に決まりがあるとは、思いませんでした。
Vercel(バーセル)は、環境変数を安全に扱いながらアプリを公開できる場所でした。
公開の場所にも守りがあるのですね。
画面の切り替えでエラーが出ないように、設定ファイルを置くことがあります。
その名前が、vercel.json(バーセル・ジェイソン)です。
「バーセル・ジェイソン 人の名前みたい・・・」
キーは2種類で画面側に置いてよいPublishable key(パブリッシャブル・キー)と
もう1つは、絶対に公開してはいけないSecret key(シークレット・キー)です。
名前が少し似ていて、間違えそうです。
本番公開まで やってみた
Supabaseにデータベースを作りました。RLSを設定し、Vercelで本番公開までやりました。
自分の作ったものが、ネットに出ました。
途中で、GitHubへのpush(プッシュ)でエラーが出ました。
gh auth setup-git というコマンドで直りました。
エラーが出ても、Claude Code の作ったコマンド1行で直りました。
この章も、まとめページと確認テストを作ってもらいました。
小テスト15問、総合問題集30問、用語解説22語です。新用語が22語、もう覚えきれません。
【今日のおすすめ】
- 認証は「あなたは誰か」、認可は「何をしてよいか」
- ログインできても、権限がなければできない操作がある
- 守りは画面側だけでなく、データベース側でもかける
- キーは2種類。画面に置いてよいものと、公開しないものがある

最後まで お読みいただき 本当に ありがとうございました!

