[mipass]サインインと侮る勿れ

この記事は mipass というパスワード管理アプリを私がどうやって作っていったかを連載記事にしたものです。連載記事の目次はこちら

©GMO Internet Group, Inc.
画像の再使用を禁止します

ミステリーと言う勿れ」好きなので、インスパイアされたタイトルにしてみました☺

クリティカルなデータなので、さすがに認証が必要。サインイン機能を作る必要があります。

パスワード認証

まずメールアドレスとパスワードが必要な「パスワード認証」を考えます。
同時に、パスワード認証の問題も考えてみます。

  • メールアドレスとパスワードがバレると終わる
  • パスワードを忘れると終わる

じこせきにんだから

まあ、確かにそりゃそうなんですが、自分が使うのにそんな自己責任は嫌です。
他の認証方法も検討することにしましょう。

生体認証

これは確かにスマートですが、スマフォしか使えないというのが面倒です。
また、生体認証はスマフォネイティブなコードになってしまうため、unity で素直に実装できないのも辛いところ。
この 2 点により、生体認証は見送りました。

普段使いは iPhone なので、Android 周りは極端に無知。機種によって生体認証ないとかあるんでしょう(多分)。

メール認証

サインイン画面になるとメールが届く、届いたメールのワンタイムパスワードを入力すると無事サインイン、という形式を考えました。

これの利点は、メールにアクセスできる人間しか、ワンタイムパスワードを知る事ができないという点。
メールアカウントは乗っ取られると大変なことになるので、2段階認証など、セキュリティを強化している人が多いです。
ワンタイムパスワードなので、パスワードがバレる心配もありません。

欠点も挙げておきます。まず、自分が送信元のメールサーバーを持つ必要があること。

これは欠点、というより注意事項ですね。
ドメインとセットで使用できるメールサーバーがあれば「メール送信元」となる事ができるので、ドメイン付きレンタルサーバーを借りていた私は問題ありませんでした。

次に「確認が面倒」なこと。

スマフォのメール通知を許可していればそれほどでもないんですが、そうしてない人はいちいちメーラーを開いて確認する必要があります。

最後に「オフラインで使えない」こと。

ログインパスワードでそもそもオフラインなんて事はあるのか? とも思うのですが、局所的に必要な場面があるかもしれません。

これらの欠点は「パスワード認証」であれば払拭できます。

「パスワード認証」には「メールアドレスとパスワードがバレると……」といった問題があるものの、リスク(と引き換えの利便性)をユーザーが選べるのは大事ですよね。

OAuth 認証

つくるために いろいろしらべる のが めんどうだった。
このへんはやはり、企業のように知見を使いまわせる立場が有利ですね……。

パスワード認証と、メール認証のハイブリッド

パスワード認証とメール認証のハイブリッドですが、どちらをメインとするか決める必要があります。
これは状況に応じてユーザーが選択するべき部分であり、場合によっては「PC はパスワード、スマフォはメール認証にしたい」といった2刀メインも想定されます。

そのため、パスワードは端末ごとに使うか使わないか、設定できるようにしました。
パスワードが端末にあり、クラウドにはないので、万が一クラウド上のファイルが漏洩しても大丈夫、という利点もあります。

なお、メール認証はオンオフできない基本機能です。
初期登録画面ではまずメールアドレスを聞かれ、

登録したメールアドレスに、最初のワンタイムパスワードが発行されます。
本アプリを使用するためにメール接続は必須ということを、ユーザーに理解してもらうための手順です。

メール認証を通過できた場合、初めてメイン認証をパスワードにするか、メールにするかの選択肢を表示します。

この画面は最初ありませんでしたが、「設定画面でパスワード認証も選択できる」という事を知らず、メール認証しか使えないのか……というユーザーが多いだろうと考え、初期ウィザードに含めました。

設定画面の UI は正直ちょっと手を抜いています💦
そのうちアップデートで変えるかも。

完成するまで

完成してみるとシンプルにまとまりましたが、ここまでの UI になるまで結構右往左往しました。。

3回くらい作り直しましたが、こういったシステムを作り慣れてないからこそのドタバタですね。
当たり前のように使っているログイン認証の設計も、自分で作ろうとすれば想像以上に面倒なんだと実感しました。

返信を残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA