問題タブ [totp]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
algorithm - TOTP アルゴリズムは、クライアントの時刻が常に正しく同期されていることに依存していますか?
何らかの理由で携帯電話の時計/カレンダーがかなりの時間ずれているとどうなりますか. TOTP (時間ベースの OTP) アルゴリズムは無効なトークンを生成しますか? また、タイムゾーンはトークンが正しいことで役割を果たすのですか、それともクライアントとサーバーの両方がNetwork Time Protocolサーバーと通信して、すべてが同期されていることを確認しますか?
qr-code - Google Authenticator による 2 要素認証 - QR コードをスキャンする代わりにキーを手動で入力
Google Authenticator アプリでは、QR コードをスキャンするか、発行者から提供されたキーを手動で入力できます。
次のスクリーンショットでは、2 番目の方法に従って TOTP を取得する方法を示しており、Google セキュリティ設定の中で 2FA のセットアップを確認できます。
私の質問は次のとおりです。このキーはどのように生成されますか?
私のウェブサイトで Google Authenticator を使用して 2FA をサポートしようとしていますが、QR コードの生成方法に関する多くの参照とドキュメントを見つけましたが、別の方法について言及しているものはありません。
編集:
もう少し明確にするために、Grails 3 webapp で Google Authenticator を使用して 2FA をサポートしています。各ユーザーの秘密鍵 (Base32
文字列) を生成し、ユーザーがスキャンする QR コードを提供し、ログイン時に TOTP を検証することで、ユーザー フロー全体を既に実装しています。私は依存関係として使用しました:
org.jboss.aerogear:aerogear-otp-java
、GA からの TOTP に対してユーザーの秘密鍵を便利に検証するaerogear OTPorg.grails.plugins:qrcode
、qrcode QR コードを生成するGrails プラグイン
私の質問は、Google Authenticator アプリに新しいエントリを追加する 2 つの方法についてです。 Google セキュリティ設定で提供されます)
Android の GA からの説明用のスクリーンショットを確認できます。
このようなコード (1 番目のスクリーンショットから始まりfzee
、2 番目のスクリーンショットでは「提供されたキー」という名前) を生成してユーザーに提供するにはどうすればよいですか? QRコードにもエンコードされているのと同じデータ文字列のエンコードだと確信していますが、どれが(単純にではなく)わかりませんBase32
。
ios - Google 認証システム、iOS の Authy などのアプリの時間ベースの OTP 間の同期を維持する方法
タイマーを使用して 30 秒ごとにトップを生成するアプリケーションに取り組んでいます。スキャンした QR コードから秘密鍵を取得して 1 つのモデル配列に追加し、秘密鍵ごとに tOTP を生成して別のモデル配列に追加しています。そのモデル配列を使用して、テーブルビューにデータを入力しています。
tableviewcell には、otp を表示するためのラベルと、進行状況を追跡するためのカスタム循環進行状況ビューが含まれています。主な問題は、Google Authenticator などの他の TOTP アプリとの同期を維持できないことです。毎秒タイマーを実行すると、TOTPジェネレーターライブラリから毎秒otpsを生成でき、テーブルビューをリロードしてラベルを更新できます。しかし、この機能は進行状況ビューに影響し、otp を生成してテーブルビューをリロードするために毎秒タイマーを実行しているため、編集中のテーブルビュー セルを削除します。誰かが助けてくれることを願っています...
これが私のコードです...
これはモデルオブジェクトです...
これはTOTPを生成するジェネレータークラスです...
java - ユーザーのデバイス時刻が確実に更新されるようにするにはどうすればよいですか?
Android アプリではTime based OTP
(totp) を使用します。ユーザーのデバイス時間が望ましい範囲 (通常はプラス/マイナス 1 ~ 2 時間) にある場合は、問題なくtotp
動作します。ただし、デバイスの日付/時刻が間違っている場合 (例: 実際の時刻より 4 時間遅れている場合)、totp 認証が機能しないため、ユーザーのデバイス時刻が更新されていることを確認する必要があり、更新されていない場合は、警告を表示するか強制する必要があります。更新するユーザー。
Whatsappにも同様のチェックがあると思います.デバイスの時間が間違っている場合は警告が表示されます.プログラムでこれをどのように達成できますか?