問題タブ [one-time-password]
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.
random - オンライン アプリケーション用の 1 回限りのオフライン数値コードを生成する
ボードから 1 回限りの数値コードを生成する必要があります。このコードはオンライン Web アプリケーションから検証する必要があり、トークンが有効な場合はデータベース内に記録されます。
もちろん、トークンの生成は、ボード上のボタンをクリックするだけで生成されたトークンを取得するユーザーからは予測できません。
オンライン アプリケーションは、ボードと直接通信せずにトークンを検証できる必要があります。
ボードと Web アプリケーションで使用できるアルゴリズムは何ですか? ウェブ上に同様の例はありますか?
ボードが Web サービスと同期していない可能性があることに注意してください (つまり、ユーザーがボタンを 6 回押して 6 つのトークンを生成した)、それでも Web サービスはそれらを検証できる必要があります。
アルゴリズムは、たとえば Arduino に実装できるほど単純である必要があり、将来的には集積回路内に直接実装することもできます。
cas - CAS による 2 要素認証
2 要素認証を使用するように CAS インスタンスを変更するように依頼されました
私たちにとって、ユーザーにメールや SMS を送信するのは簡単です。したがって、カスタム OTP は歓迎されます。
CAS の 2 番目のインスタンスには関心がありません。
また、次の動作が必要です。
- ユーザーは、企業ネットワークを使用して個人証明書またはパスワードで認証できます
- インターネットからのユーザーは、個人証明書またはパスワードと OTP を介して認証できます
現在、インターネットからのユーザーは、個人証明書を介してのみ認証できます。パスワードは企業ネットワーク ユーザー専用です。したがって、この新機能は、インターネット ユーザーにとって OTP の 2 番目の要素となります。
CASはそれを行うことができますか?
2 要素認証を処理する準備ができているのは、どの CAS バージョンですか?
php - mediawiki AuthPlugin によるワンタイムパスワード
SecurID ワンタイム パスワード認証を行うための AuthPlugin 拡張機能を作成しました。ここまでは順調ですね。最初のログイン時にユーザーを認証して作成できます。ただし、最初のログインは常に 2 回認証されます。最初に認証してユーザーを作成し、2 回目に実際にログインします。ここで問題が発生する可能性があります。初回はワンタイム パスワードが使用されるため、ユーザーはログインされません。その後のログインは正常に機能します。 .
最初の認証呼び出しを追跡しました/includes/specials/SpecialUserlogin.php
(そして、どれが呼び出されているのかわかりませんが、問題のあるものを見つけて削除することができました):
では、すべてのユーザーがワンタイム パスワード システムで認証する必要がある場合 (ローカル アカウントからのログインとローカル アカウントの作成を禁止した場合)、問題のある呼び出しを削除するのに問題はありauthenticate
ますか? ここで私はひどく不安ですか?または、これを行うより良い方法はありますか?を拡張する以外のことをする必要がありAuthPlugin
ますか? たとえば、次のAuthPlugin
メソッドをオーバーライドします。
すべてのユーザーを事前に作成して同期を維持することは避けたいのですが、それは最初の重複した認証呼び出しを回避する 1 つの方法です。
ところで、セッションの実際の認証呼び出しは次の場所で行われると思いますincludes/User.php
。
python - カスタム django モデルを使用した後にログインできない
アプリで OTP を構成しました。そして、目的のメソッドに otp_required デコレータを配置した後、/account/loginにリダイレクトしています。
これは、 two_factor認証に付属するデフォルトのログイン ページです。正しいユーザー名 (電子メール) とパスワードを入力すると、エラーが返されます。
重要:
カスタム ユーザー モデルが正しく構成されていることを確認する方法。それをテストする方法は何ですか、または構成のどこが間違っているのですか。
私はこのドキュメントに従いました
さらに何か必要な場合はお知らせください。ありがとう!
authentication - 許可のみのために LDAP に統合された外部ユーザー認証
LDAP (Active Directory/Open LDAP) と共に使用する外部 OTP ソリューションを統合しています。ユーザーは、LDAP に対して認証されたユーザー ID とパスワードを使用してトークンを登録します。検証が成功すると、ユーザーはトークン ID とユーザー ID で OTP システムに登録されます。
登録中の LDAP プロセス:
- アカウント "CN=ServiceUser,DC=orgname,DC=local" (serviceUser) とパスワード "svcPassword" (servicePassword) を使用して SSL で ldap.orgname.local:636 (サーバー) にバインドします。
- ツリーのルート "OU=Users,DC=orgname,DC=local" (userRootDN) で、"cn" (userNameAttribute) が "john" に等しいユーザー エントリを検索します。
- 「cn=john,OU=Users,DC=orgname,DC=local」でエントリを見つけます
- パスワード「testpass」で「cn=john,OU=Users.DC=orgname,DC=local」を認証します
- 認証が成功すると、OTP トークンがユーザー「john」に関連付けられます</li>
認証中、ユーザーはトークンからユーザー ID と OTP を提供し、OTP システムはトークンとユーザー ID から OTP を検証します。一致した場合は、LDAP にクエリを実行してグループメンバー/nsrole を取得し、システムに適切なアクセス権を提供する必要があります。
認証中の LDAP プロセス:
- 一致した OTP トークンによる認証が成功した後、承認のために LDAP ルックアップを実行します。
- アカウント "CN=ServiceUser,DC=orgname,DC=local" (serviceUser) とパスワード " svcPassword " (servicePassword) を使用して SSL で ldap.orgname.local:636 (サーバー) にバインドします。
- ルート「OU=Users,DC=orgname,DC=local」(userRootDN) のツリーで、属性「cn」(userNameAttribute) が「john」に等しいユーザー エントリを検索します。
- 「cn=john,OU=Users,DC=orgname,DC=local」でエントリを見つけます
- ツリーのルート「OU=Roles,DC=orgname,DC=local」(roleRootDN) で、属性「member」(roleUserDNAttribute) が「cn=john,OU=Users,DC=orgname, DC=local」に等しいグループ エントリを検索します。 "
- 各ロールの "cn" (roleNameAttribute) 属性の値を返し、引き続きユーザーにアクセス権を付与します
ロールの取得はクエリのみであるため、この時点で、ユーザーが外部で認証されたことを LDAP に知らせる LDAP コマンドまたはメソッドはありますか?ログの監査に役立ちますか?
arrays - HMAC SHA-1 トランケート HOTP ロジック
HOTP の手動 HMAC SHA-1 切り捨てをカウントしようとしていますが、ソース コードでカウントした場合と同じ結果が返されません。たとえば、HMAC SHA-1 を次のように生成するコードがあります。
$hash = hash_hmac('sha1','375317186160478973','test');
それは私に HMAC = c359e469b8ef0939f83e79a300b20a6ef4b53a05 を与えるでしょう
[19] 個の配列に分割すると、次のようになります。
c3 59 e4 69 b8 ef 09 39 f8 3e 79 a3 00 b2 0a 6e f4 b5 3a 05
最後の配列から 05 (バイナリで 101) を取得し、その後 101 & 0xf = 5 を実行します
だから私は5番目の配列から数えます ef (11101111) 09 (1001) 39 (111001) f8 (11111000)
その後、 (((11101111) & 0x7f) << 24) | を実行します。(((1001) & 0xff) << 16) | (((111001) & 0xff) << 8) | ((11111000) & 0xff)) % pow (10,6)
次のような結果が得られます:56024
しかし、このコードを使用すると:
次のような結果が得られます:599808
配列からの値として 2 進値または 10 進値を書き込むと、同じ異なる結果が表示されます。誰かが私の過ちを説明するのを手伝ってくれるので、マニュアルとソースコードを数えて、HOTP の同じ値を得ることができます。ありがとうございました
cryptography - OTP Google アカウント。互換性
OTP Google Acc の実装に取り組んでいます。互換性。
これまで、私は使用してきた
-RFC2104( http://www.ietf.org/rfc/rfc2104.txt )、
-RFC4226( http://www.ietf.org/rfc/rfc4226.txt )、
-RFC6238 ( https://www.rfc-editor.org/rfc/rfc6238 )、および次のスキーマ:
[疑似コード時間 OTP] ( http://en.wikipedia.org/wiki/Google_Authenticator#Pseudocode_for_Time_OTP )
" hash := HMAC-SHA1(key, message) " までは問題ありません。他のHMAC-SHA1コンバーターで結果を何度もチェックしました。(まあ、そう思います)。
しかし、その後、何かがうまくいかないと思います...明らかに、Google認証アプリ(Android)と同じコードを取得していないためです。(少なくとも、まだ 6 桁の値です)。
私がよく理解していると確信していない部分は次のとおりです。
誰かがこれについてより詳細な説明をしてもらえますか?
ありがとう、