Splync v1.0からv1.1へ
Splyncにサインアップするとき、メールアドレスとパスワードを入力する必要があります。以前の記事で紹介したように、Splync v1.0にはすでに基本的なセキュリティ対策が含まれていました。データ転送はHTTPSで保護され、サーバーはSSHで守られており、開発者以外はアクセスできませんでした。パスワードは平文で保存されず、データベース内でハッシュ化されていたため、誰にも解読されることはありませんでした。しかし、v1.0の秘密は、アカウント作成時にメール認証がないことでした。SplyncはMVP(Minimum Viable Product)としてリリースされ、この機能はまだ友人だけがアプリの存在を知っている段階だったため省かれていました。v1.0では、入力されたメールに「@」が含まれているか、既存のアカウントと一意であるかを確認するだけでした。
メール認証がないとどうなるのか
アプリがユーザーのアイデンティティを確認せずにアカウント作成を許可する場合、他人のメールアドレスを使って勝手にアカウントを作成することが簡単に想像できます。それが実際に起こり得るのです。これによりデータが漏洩するわけではありませんが、すでに使用されたメールアドレスで自分のアカウントを登録できなくなるという問題が発生します。さらに、完全に架空のメールアドレスでアカウントを作成することも可能です。最初は深刻に思えなくても、後で開発者がそのユーザーに請求や連絡を試みたときに大惨事となります。その人物が誰なのかもわからないのです。そこで、Splyncではメール認証が次のステップとされました。
メール認証のしくみ
Splync v1.1では、新しいユーザーがサインアップすると、アプリは自動的に入力されたアドレスにメールを送信します。このメールには一意の自動生成された認証リンクが含まれています。リンクをクリックすると、ユーザーはそのメールアカウントにアクセス可能であることを確認します。認証されると、サーバーはユーザーのアカウントを有効としてデータベースに保存し、真にアクセス可能な人物によるものと認識されます。このプロセスにより、Splyncのすべてのアカウントが実際に連絡可能な人に属していることが保証されます。技術的な観点からこの流れを詳しく見てみましょう。
メール認証の技術的実装
SplyncのバックエンドはPython/FastAPIを使用しており、モバイルアプリはSwiftUIで構築されています。アプリはユーザーインターフェースのみを扱い、認証ロジックや機密情報はサーバー上で安全に保管されています。v1.1では、「未認証ユーザー」と「認証済みユーザー」の間に標準的なメール認証ステップが追加されました。新規ユーザーがサインアップすると、アプリは入力されたデータをサーバーに送信します。サーバーにはMariaDBのデータベースがあります。ユーザーを未認証としてデータベースに保存します。パスワードはハッシュ化されて保存されますが、アカウントはまだアクティブではありません。その時点でサーバーは、期限付きの一意の認証トークンを生成します。その後、SMTP(Simple Mail Transfer Protocol)サーバーを使用して安全な一度限りのリンクを含む認証メールを送信します。ユーザーがリンクを開くと、サーバーはトークンが有効かつ未期限切れであることを確認します。認証されるとアカウントがアクティブになり、アプリから通常通りサインインできます。これにより認証は安全で軽量に保たれます。
Python?FastAPI?SwiftUI?SMTP?MariaDB
これが秘密のコードのように聞こえても心配ありません—これらはシステムを動かすためのツールです。Splyncのサインアップフローは、カスタマーサポートセンターが誰かの身元確認を行うようなものです。「お名前とメールアドレスをお願いします」と、フロントデスクの親切なオペレーターSwiftUIが尋ねます。あなたが情報を伝えると、彼女は「少々お待ちください」と言います。彼女はすぐにそれをオフィスの内部電話システムであるFastAPIに転送します。FastAPIは彼女を検証担当の内勤スペシャリスト、Pythonにつなげます。Pythonは顧客データベースであるMariaDBと連携して、安全にあなたの情報を記録し、ステータスを「未認証」とします。その後、Pythonは外部のメッセンジャーであるSMTPに、安全なリンクが含まれた確認メールを送るよう依頼します。あなたがリンクをクリックすると、Pythonはそれが有効であることを確認し、MariaDBのレコードを「認証済み」に更新します。最後に、FastAPIはオペレーターに身元が確認されたことを知らせ、アカウントがアクティブになったことを伝えます。これらのパーツが一緒に、Splyncの認証プロセスを人間らしくかつ安全なものにしています。
Splyncのセキュリティの次のステップ
メール認証は小さな機能に思えるかもしれませんが、信頼性のすべてを変えます。これにより、Splyncは友人間の個人的なプロジェクトから、誰もが安心して参加できる公のアプリへと進化します。SMTPによる認証リンクの送信は、Splyncの新しいユーザーへの初めての握手のようにも感じられます。この機能は、将来的な改善の基盤にもなります—パスワードリセット、多要素認証、アカウント回復など。セキュリティの各層はその前のものに基づいて構築されます。メール認証により、Splync v1.1は共有費用管理を便利なだけでなく、本当に信頼できるものにするための有意義な一歩を踏み出します。