web-dev-qa-db-ja.com

TOTPを使用したMFAの実装フロー

フロントエンドの場合、MFA(TOTPを使用)を実装したいと思います。間違ったキーワードを検索している可能性がありますが、このソリューションを安全に実装するための適切な方法を見つけることができませんでした。たとえば、次のような図のフローを探していました。

  1. リクエスト:POST JSONの資格情報を使用して/ loginに、レスポンス302から/ mfa
  2. リクエスト:GET/mfa、レスポンス/ mfa
  3. リクエスト:POST再度認証情報とmfaコード、/へのレスポンス302
  4. リクエスト:GET to /、レスポンス302 to /(ユーザーがログイン)

https://tools.ietf.org/html/rfc6238 )を詳細に説明しているRFCはありますか?そのようなプロトコルの実装または他のWebサイトのSSLをスニッフィングしてリバースエンジニアリングするユーザー次第ですそれをしました(私はgithubなどのためにそれをしました)。それを実装する正しい方法を探しているだけで、すでに機能しているフレームワークである可能性がありますか? Cookieを使用する必要がありますか、それともユーザーを再リクエストしてmfrコードと一緒にログインしても問題ありません(ステップ3でgithubがauthenticity_token=<base64token>&otp=<123456>を使用していることに気づきました)

あなたの助けをどうもありがとう

PS;グーグルでログインするようなすでに作られた解決策は不可能です、私は自分のユーザーのデータベースを使用する必要があります

1
jthemovie

PrivacyIDEAとその製品およびコードを確認することをお勧めします。これらは、Pythonで機能する実装があり、一方または両方の認証ラウンドにAPIを使用できると思います。

https://www.privacyidea.org/

それはあちこちでいくつかの荒削りな部分がないわけではありませんが(テストなしでユーザーDBでこれを緩めたくないことは確かです)、調査中に使用できるサービス、または具体的な実装のいずれかを提供する可能性がありますあなた自身をベースにすることができます

1

二要素コード用に別のページを用意しないのはどうですか?

標準のログインページに、2FAコードの非表示のオプションフィールドを用意します。ログインするときは、アカウントで2FAが有効になっているかどうかを確認できるように、Javascriptで入力します。有効になっている場合は、フィールドを表示して、ユーザーに再試行させます。 ?

これにより、ユーザーがパスワードを使用してログインしたかどうかを覚えておく必要がなくなります。2回目の試行で、ログイン要求にパスワードと2FAコードの両方が含まれ、その時点でそれらを確認してアクセスを許可/拒否できるためです。

Gandi.net このようなものを実装します。 2FAを有効にしてログインすると、ユーザー名/パスワードが既に存在する同じログインページと、2FAコード用の追加フィールドが返されます。パスワードの返送は完全ではないと主張することができます(攻撃対象領域は非常に小さいIMOですが)。そのため、Javascriptでそれを行うことを提案しました。そうすれば、サーバーがパスワードを返送する必要がなくなります。単にページを更新せず、既存のページを保持します。

0
André Borie

ここで、OTPを使用した2要素認証について何か問題があると思います。

デフォルトの動作

ユーザー名とパスワードでユーザーを認証するWebアプリケーションを想像してみてください。これがあなたのニーズに合わせて実装されているイメージで、あなたはそれで大丈夫です。これを行うための標準があります。

現在:OTPはそれで何も変更しません。 Cookie、セッション、JWTは何も変更しません。 OTPを使用すると、パスワードの2番目の要素のみaddになります。

それまで、ユーザーは入力しました

  • username
  • パスワード

これはアプリケーションに送信され、アプリケーションはそれを検証して、ユーザーにセッションを返します。

2番目の要素を追加

2番目の要素を追加する場合、ユーザーは次のように入力します。

  • username
  • パスワード+ OTP

これはアプリケーションに送信され、アプリケーションはパスワード+ OTPを検証し、すべてが正常であれば、以前と同じ方法でセッションを返します。ここにはvoodoは含まれていません。

0
cornelinux

目的に関しては、PCI-DSSで説明されているMulti-Factorのプロセスフローを検討することをお勧めします(現在の状況には直接適用できない場合もありますが、最終的にはいつかは可能です)。

5ページの章:マルチステップとマルチファクターを確認してください

情報補足多要素認証バージョン:1。0日付:2017年2月作成者:PCI Security Standards Council

https://www.pcisecuritystandards.org/pdfs/Multi-Factor-Authentication-Guidance-v1.pdf