AIでログインシステムを作る
登録・ログイン・ログアウト・「誰が何を見られるか」までを、AIで安全に作る。初心者がはまる落とし穴も。
ひとことで言うと
ログイン=「あなたは誰か(認証)」+「何をしてよいか(認可)」。安全ルールを明示すれば、AIは穴のあるコードを出さない。
作れるもの
登録・ログイン・ログアウトでき、役割で権限を分けられる試作。そして、省いてはいけない安全ルールが分かる。
まず:ログインは実は2つのこと
多くの人は「ログイン=ID とパスワードを入力すること」だと思っています。実は2つの仕事です。認証(あなたは誰か)と認可(何をしてよいか)。認証に成功すると、システムは見えない「通行証」を渡します。以後はリクエストごとにそれを持ち歩くので、システムは本人だと分かり、その操作をしてよいかも判断できます。
このガイドは文法の暗記ではなく、要件をAIにどう伝えるかを扱います。動くように見えて初日に突破される、ではなく、安全なログインを作らせるためです。
3つの道:自作・プラットフォーム・ソーシャルログイン
| やり方 | 向いている | 注意点 |
|---|---|---|
| パスワードログインを自作 | 完全に制御したい・原理を学びたい | ハッシュ化・有効期限・総当たり対策を自分で負う |
| Auth プラットフォーム | 速くて安全 | ベンダーロックイン。多くは無料枠あり |
| ソーシャルログイン(Google 等) | 登録のハードルを下げる | それでも自分側でセッションを作る |
初心者の現実的な選択はたいてい「プラットフォーム Auth + ソーシャルログイン」。最も事故りやすいパスワード保管を専門家に任せ、自分は「誰が何を見られるか」に集中します。
AIにはこう言う。さもないと穴を渡される
AIは「動く」ログインは得意ですが、既定値が安全とは限りません。プロンプトでは次を明示的に要求します。
- パスワードは必ずハッシュ化(bcrypt か argon2)し、絶対に平文で保存しない。
- ログイン時のトークン/セッションは有効期限を設け、失効できる(ログアウトやパスワード変更で無効化)。
- トークンはhttpOnly Cookieに入れ、フロントの JavaScript から読める場所には置かない。
- 権限チェックはバックエンドで行う。フロントはボタンを隠すだけで、セキュリティ境界にはならない。
このリストを「受け入れ基準」としてAIに貼り、段階的に実装させましょう。
アーキテクチャ
初心者がはまる落とし穴
- 平文でパスワード保存:一度漏れたら全員のパスワードが露出。必ずハッシュ化。
- トークンに期限なし:一度盗まれたら使い放題。短い期限+失効可能に。
- フロントで権限判定:「管理者か?」の判定を画面に書くと、少し分かる人が書き換えて入ってきます。
- シークレットをフロントに:API キーや署名鍵がブラウザに届いた時点で公開も同然。
次のステップ
- まず概念を固める:認証 Auth
- 次に保存するユーザーデータを設計:AIでデータベースを設計する
よくある質問
AIにログインを作らせるだけでよいのに、なぜこれを学ぶ必要が?
AIは「動く」ログインは得意ですが、既定値が安全とは限りません。平文パスワード、期限なしトークン、フロントでの権限判定など。書ける必要はありませんが、これらの安全ルールを理解し、「受け入れ基準」として要求し、満たしているか確認できることが必要です。
パスワードログインを自作するのと、Googleログインを使うのはどちらが安全?
初心者には、ソーシャルログイン(Google 等)や Auth プラットフォームの方がたいてい安全です。最も事故りやすい「パスワード保管」を専門家に任せられるからです。自作も可能ですが、ハッシュ化・総当たり対策・トークン管理を自分で担う必要があり、ハードルは高めです。
参考資料
- Authentication Cheat Sheet — OWASP
- Session Management Cheat Sheet — OWASP
CRMルート の次のステップ: フォームからCRM →