第19章 ユーザ 認証、スパイク、 およびデスパイク
この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com
我々の美しいリストサイトが公開されて数日が経ち、 ユーザからフィードバックが寄せられ始めた。 「サイトは気に入っている」と彼らは言う、 「だがリストを頻繁に失ってしまう。 URLを手動で覚えるのは大変だ。 作成中のリストを記憶してくれると助かる」
ヘンリー・フォードと速い馬を思い出せ。ユーザ要件を聞くたびに、 少し深く掘り下げて考えることが重要性だ。 本当の要件は何か? そして、試してみたかった新技術をどう絡められるか?
明らかにここでの要求は、 ユーザがサイトに何らかのアカウントを持ちたいということだ。 では、さっそく認証について掘り下げてみよう。
当然ながら、パスワードの記憶処理を自分たちでやるつもりはない——90年代っぽい上に、ユーザパスワードの安全な保管はセキュリティ上の悪夢だ。それは他人に任せたい。代わりに「パスワードレス認証」という面白い手法を使う。1
パスワードレス認証と「マジックリンク」
パスワード自体を保存せずに済む認証システムとは? OAuth?OpenID?「Facebookでログイン」?うーん。個人的にはどれも不気味なニュアンスが許せない。 GoogleやFacebookが、いつどのサイトにログインしたかを知る必要があるのか?
代わりに、第二版では2 面白い認証方法を発見した。 今は「マジックリンク」という名前付けがされているが、 「メールを使うだけ」と言ってもいい。
このシステムは2014年に考案された(少なくとも普及したのはその時だ)数多くのWebサイトで新しいパスワードの作成にうんざりした人物によって。 彼らは結局、ランダムで使い捨てのパスワードを使い、覚えようともせず、再ログインが必要になるたびに「パスワードを忘れた」機能を利用していた。 詳細はMediumで読める。
その概念は単純だ:本人確認にはメールを使うだけ。 「パスワードを忘れた場合」機能を設けるなら、結局メールを信頼しているわけだから、徹底的にメールに頼ればいい。 誰かがログインしたい時は、その人専用のURLを生成してメールで送る。そのURLをクリックすればサイトにアクセスできる仕組みだ。
決して完璧なシステムではないし、 実際の本番Webサイト向けログイン解決策として機能させるには 考慮すべき細かい点も山ほどある。 だがこれは単なる遊び心のあるおもちゃプロジェクトだ。 やってみよう。
やや大規模なスパイク
注記
思い出せ:スパイクとは探索的コーディングの段階だ。 テストなしでコードを書いて、 新しいツールを試す順序で新しいアイデアを実験したりする。 後でTDDを使って「適切に」コードを書き直すことになる。
このマジックリンクプロジェクトをセットアップするにあたり、最初に既存のPythonとDjango認証パッケージ、 例えばdjango-allauthなどを調べた。 だがどちらも現段階では複雑すぎるように見えた (それに、自分でコードを書く方が楽しいだろう!)。
代わりに、いきなり飛び込んでハックを続けた。 何度か行き止まりや間違った方向に進んだが、 何とか動くものを作り上げた。 その仕組みを説明した後、 実装を「デスパイク」する手順を解説する。つまり、 プロトタイプをテスト済みで本番環境対応のコードに置き換えるのだ。
君も自分のサイトにこのコードを追加してみてくれ。 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access