2016-04-07 8 views
1

TOTPを生成して(TOTPアルゴリズムを使用して)Java Webアプリケーションを構築し、メールで送信しています。どのように私はそれを認証するでしょうか? 私の大規模な調査では、すべての論文にモバイルデバイスの認証(Google Authenticatorなど)が表示され、アプリケーションにモバイルデバイスが使用されていないことがわかりました(ユーザーメールIDで受信された簡単なOTP認証私のメールで受け取ったOTPのTOTP認証

OTP生成関数は次のようになります: OTP.generate( "+キー、" + System.currentTimeMillis()、6、 "totp")

答えて

1

次に、Otpの値を確認する方法を知っています。 https://tools.ietf.org/html/rfc6238

メールでOTP値を送信すると、サーバーは送信した値を保存して覚えておくことができます。

ユーザーがOTP値を入力したときに、その値に基づいて値を再計算することができます。 メールのみで値を送信する場合は、任意の文字列を送信することもできます。

もっと一般的なアプローチをしたいのですが、Google認証システムとハードウェアトークンをTOTPで許可しないのはなぜですか?

しかし、Webアプリケーションを構築している場合は、バックグラウンドでもっと汎用的なソリューションが必要なのかもしれません。 privacyIDEAはオープ​​ンソースのソリューションです。電子メールとSMSによるGoogle認証、ハードウェアトークンまたはOTPによるTOTPホイールを再構築する必要はありません。

+0

ありがとう、Google認証システムを私のウィンドウサーバーにインストールしてアプリケーションと同期できるかどうか –

+0

なぜあなたのサーバーにGoogle認証ツールをインストールしますか? Guillermoが指摘したように、サーバー/アプリケーションがワンタイムパスワードを生成しない場合は、Google認証システム(または任意のハードウェアotpトークン)が必要です。その後、端末やスマートフォン(Google認証システム)が行い、アプリケーションやプライバシー保護者はこれを検証する方法を知っています。 – cornelinux

+0

Ok ..私のアプリケーションはTOTPアルゴリズムに基づいてOTPを生成しているので、ユーザーがメールボックスで受信し、テキストフィールドに入力するotpの認証に悩まされています。 –

1

TOTPは、コードジェネレータ(通常はGoogle認証システムなどのモバイルアプリまたはデスクトップアプリ)とコード検証ツール(認証サーバー)が2つの異なるエンティティである場合に便利です。 あなたのケースでは、アプリケーションはコードジェネレータとコードバリデーターの両方を実行するので、この場合は別のアプローチを使用します。 HOTPを見ましたか? TOTPは実際にはHOTPに基づいているが、後で明示的なカウンタを移動因子(すなわちイベントベースの移動因子)として使用するが、TOTPの移動係数はエポックから経過した時間に基づいて絶えず変化する。 (すなわち、時間ベースの移動係数)である。

+0

は実際に、会議では、それはTOTPアプローチを決定しましたので、私はちょっとここで立ち往生して前方に移動することができないのです)、私は将来的にすべての問題を得ていないことを願っています。いくつかの回避策を提案してください。 –

+0

TOTPでは、トークンクロックのドリフトに対処するための時間ウィンドウが可能です。認証を希望するユーザーは、通常、(メールの配信にかかる時間がかかる場合を除いて)数分間待機しません。したがって、メールが10〜20秒以内に配信されるとすれば、あなたは安全な側にいます。 – cornelinux

+0

TOTP検証アルゴリズムは仕様の一部ですので、あなた自身でそれを実装できるはずです。いくつかのヒントが必要な場合は、GitHubでいくつかのプロジェクトを見つけることができます。 [こちら](https://github.com/guyht/notp)はNodeJSのために書かれたものです。 –

関連する問題