bosyuが実装したメールアドレスでの登録/ログイン機能とは!?

f:id:ritou:20200727191917p:plain

こんばんは、ritouです。

今日はこの機能を使ってみましょう。

何の話?

medium が前から採用していた方式です。

medium.com

これを新しい方式と捉えるかどうか、個人的にはそれほど新しくは感じません。

メアドでリカバリー手段を確保しつつパスワードを設定させるのが現状一般的な「パスワード認証を用いた登録フロー」だとしたらそこからパスワード設定を抜いたものがメアドによる新規登録フローと言えるでしょう。 また、パスワードを忘れた際にメアドでリカバリーする処理を認証フローとして使うことで「パスワード認証を用いた認証フロー」からパスワードの検証を取り除いたものと考えることができます。いつだったかのbuildersconでもそんな話をしたことがある気がしますね。

f:id:ritou:20200727190404p:plain

当然、この方式ではメールを受信できる環境が第3者の管理下に置かれた場合などが問題となるわけですが、それは既存のパスワード認証でもだいたい同じことが言えるでしょう。 一時的に利用できない場合もあるかもしれません。その場合は、SMSだったり他の認証方式と組み合わせる必要が出てくるでしょう。 この辺りを頭に入れつつ、見ていきましょう。

新規登録 from PC画面

PCから挙動を見てみましょう。メアドを入れます。

f:id:ritou:20200727183359p:plain

新規登録用のリンクを送りましたと出ます。 いや、出ませんね。ログイン用のリンクって書いてあります。 テンプレート間違えてるのでは疑惑がありますがまぁいいでしょう。

f:id:ritou:20200727183429j:plain

送られたメールにはボタンとリンクで新規登録を続けるためのURLがついています。 HTMLメールの扱いなどもあるかもしれませんが、メールを開く環境とbosyuを利用する環境が別だった場合はコピペしてメアドを入力した環境で処理を続けることができます。

f:id:ritou:20200727183448j:plain

アクセスすると新規登録を続けるための画面になります。

f:id:ritou:20200727183501p:plain

新規登録はこれで完了です。

新規登録 from Modile画面

次にモバイルのブラウザで開いた場合の挙動を確認しましょう。

f:id:ritou:20200727184435j:plain

メアドを入れた後の挙動が変わっています。 新規登録コードを送ったと表示され、入力フォームがあります。

f:id:ritou:20200727184449j:plain

これはメールを確認した後に再びモバイルの画面で処理を続けるために、コード入力という方式を選択しているということでしょう。 当然ながら送られてくるメールの内容もPCからの場合とは異なります。 コードを表示しつつ、リンクをコピペすることでもURLにアクセスできます。

f:id:ritou:20200727185039j:plain

mediumでも同様にPC/Mobileのブラウザ(もしくはアプリかどうかも?)を判別しているようですが、現状ではこのやり方がスタンダードと言えるでしょう。

ログイン

スクショ撮りまくりましたが、だいたい一緒っぽいので省略します。

登録状態の返答

パスワードを利用しないにせよ、メールアドレスを入力する機能となると、登録済みかどうかをどう扱うかが気になるところです。

qiita.com

bosyuの場合は、エラーを表示した後にメアドをフォームから消してくれる仕様となっております。

f:id:ritou:20200727162011p:plain

f:id:ritou:20200727161813p:plain

攻撃者視点で言うと、仮にメアド(とパスワード)のリストがあるときに登録済みかどうかを確認することで、生きているメールアドレスを抽出できるとも言えます。bosyuではパスワードを預かっていないと言うことで直接それが別の攻撃に繋がることはないため、ユーザーフレンドリーに結果をお伝えしていると言うところでしょうか。

この辺りはバランスが難しいですね。個人的には上記Qiitaの記事に書いたとおり画面ではエラーを返さない仕組みにしたいところです。

まとめ

bosyuが実装したメアドで登録/ログインの機能を確認しました。 もっといろいろな機能を持つサービスであれば「メールが急に届かなくなった」場合のリカバリーをもう少し考える必要が出てきて悩ましいところですが、比較的ライトなサービスであればこのぐらいの実装で問題ないと思います。

たくさん使われると良いですね。 ではまた!

(追記 : 前からこの辺の話はQiitaに書いてたので参考までに貼っておきます)

qiita.com

qiita.com