1

認証フローの設計

ユーザーが複数の方法(Facebook、Twitter、ローカルアカウント)で登録およびログインできるサービスを作成する場合、複数の方法でアカウントの作成と検証を処理するための最良の方法は何ですか?

言い換えると

この状況を想像してみてください。

  • ユーザーは、自分の(またはおそらく誰かの)電子メールパスワード(ハッシュされるなど)を送信して、通常のアカウントを作成します
  • 便宜上、ユーザーは新しく作成したアカウントにすぐにアクセスできます(メールアドレスを確認する必要はありません) 。
  • 次に、ユーザーは外部のoAuthサービス(Twitter、Facebookなど)でログインしようとします。
  • Facebookでログインすると、同じメールアドレスでアカウントが(手動で)作成されていることがわかりました

これを処理するための最良の方法は何ですか?

私は、ユーザーフレンドリー(便利)で安全なソリューションを考え出そうとしていますが、セキュリティ上の欠陥の可能性が私を怖がらせています。

例としてWebサービス「Mixlr」を使用して、これをどのように処理するかを見てみましょう。

  • 私はあなたのメールアドレスでアカウントを作成します(あなたのために吸います)
  • Mixlrはすぐにログインして、サービスの使用を開始できるようにします(便利です)
  • 彼らはまた、私のアカウントを確認するために私に電子メールを送信します(私はすでにそれを使用していますが)
  • Mixlrに参加することにしたので、アカウントを作成します。ただし、従来の登録プロセスを使用する代わりに、Facebookを使用してMixlrアカウントを作成することを選択します。
  • 興味深いことに、Facebookは私がのアカウントを作成するの使用したのと同じメールアドレスをあなたに送り返します
  • Mixlrはアカウントを「マージ」することを決定し、Facebookアカウントを新しい「接続されたアカウント」としてサービスに追加するだけです。

そこに問題があります

サービスを使用してまだログインしている場合は、技術的にはFacebook アカウントを少し制御できます。

それは安全ではありませんか...そして率直に言って、少し大ざっぱです?

ただし、Mixlrは、ユーザーが自分の電子メールアドレスを確認/確認しない限り、ユーザーが「2回目」でログインすることを許可しません。

基本的に、登録時にユーザーが自分の電子メールアドレスを確認することを最初に要求しない限り、利便性とセキュリティの中間点が何であるかはわかりません。

4

2 に答える 2

1

未確認のアカウントをFacebookなどで作成したアカウントとマージしないでください。サードパーティのサービスで作成したアカウントは、そのアカウントで認証する必要があるため、優先されます。

于 2012-10-06T16:13:14.540 に答える
1

これは、これを処理する方法に関する私の提案です。

ケース 1: ユーザーがサイトでアカウントを作成する

  • あなたの要件は、ユーザーがメールアドレスを確認せずにサイトに直接アクセスできることだったので、少なくとも一時的にこれを行う必要があります. 彼が適時にアカウントをアクティブ化できない場合は、アカウントを削除または非アクティブ化する必要があります。
  • 他のアカウント (Facebook、Twitter など) が提供する電子メール アドレスとは関係なく、それらを接続するためのボタンを提供します。

ケース 2: ユーザーが [ Login with ... ] をクリックする

  • プロバイダーからユーザーのメール アドレスを取得する
    • サーバーにその電子メールのアカウントが既にある場合は、ユーザーに画面を表示します。ユーザーはそのアカウントにログインでき、成功した場合は両方のアカウントを接続できます
    • 彼がまだ知られていない場合は、彼に任せてください
      • ローカル アカウントを作成する
      • ログインしてローカル アカウントを別のメール アドレスに接続する
      • または、ローカル アカウントを持たない特別なユーザーとしてログインするだけです (このユース ケースをサポートするかどうかによって異なります)。

もちろん、未検証のものと検証済みのものを決して一致させてはならないので、Mixlr はここで非常に悪いことをします。ユーザーは、接続する前に常に両方のアカウントを承認する (つまり、両方にログインする) 必要があります。

一部のプロバイダーでは、報告された電子メール アドレスが実際に検証されているかどうかも確認できないことに注意してください。

于 2012-10-04T17:07:44.463 に答える