问题标签 [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.
passwords - 一次性密码 (OTP) 到期余地
如何为定时到期设置一个余地,以允许误差范围,例如:1 分钟?
目前这是我的粗略实现,我必须在最后一分钟添加另一个检查,以防服务器收到消息 00:01:00 并且客户端发送 00:00:59;
这个问题是对 密码重置链接到期的详细说明......我需要更多详细信息来了解时间 +/-
random - 在线申请生成一次性离线数字代码
我需要从板上生成一次性数字代码,必须从在线 Web 应用程序验证此代码,如果令牌有效,则将其记录在其数据库中。
令牌的生成当然必须是用户无法预测的,用户只需单击板上的按钮并取回生成的令牌。
在线应用程序必须能够在不直接与董事会通信的情况下验证令牌。
板子和 Web 应用程序可以使用什么算法?网上有没有类似的例子?
请注意,看板可能与 Web 服务不同步(即用户按下按钮 6 次并生成 6 个令牌),但 Web 服务必须能够验证它们。
该算法必须足够简单,例如可以在 Arduino 中实现,将来甚至可以直接在集成电路中实现。
cas - 使用 CAS 的两因素身份验证
我被要求修改我们的 CAS 实例以进行第二因素身份验证
对我们来说,向用户发送电子邮件或短信很容易。因此,将欢迎自定义 OTP。
我们对 CAS 的第二个实例不感兴趣。
我们还需要下一个行为:
- 用户可以使用企业网络通过个人证书或密码进行身份验证
- 来自 Internet 的用户可以通过个人证书或密码加 OTP 进行身份验证
现在来自 Internet 的用户只能通过个人证书进行身份验证。密码仅供企业网络用户使用。因此,新功能将成为互联网用户的第二个因素 OTP
CAS能做到吗?
哪些 CAS 版本已准备好处理两因素身份验证?
php - 使用 mediawiki AuthPlugin 的一次性密码
我创建了一个 AuthPlugin 扩展来执行 SecurID 一次性密码身份验证。到目前为止,一切都很好。我可以在第一次登录时验证并创建用户。但是,第一次登录总是验证两次。它第一次验证以创建用户,第二次验证以实际登录。您可能会在这里看到问题:第一次使用一次性密码,因此用户未登录。后续登录工作正常.
我已经追踪了第一个 auth 调用/includes/specials/SpecialUserlogin.php
(我不确定哪个被调用,但我可以找到有问题的并删除它):
那么,如果所有用户都需要使用一次性密码系统进行身份验证(如果我阻止从本地帐户登录和创建本地帐户),那么删除有问题的authenticate
调用是否有问题?我在这里非常不安全吗?还是有更好的方法来做到这一点?除了扩展之外,我还应该做些什么AuthPlugin
吗?例如,我重写了这些AuthPlugin
方法:
我想避免预先创建所有用户并使它们保持同步,但这是避免初始重复身份验证调用的一种方法。
顺便说一句,我认为会话的真正身份验证调用发生在includes/User.php
:
python - 无法从登录页面进一步移动,[django-otp]
问题:
提供用户名和密码后,我重定向回登录页面并显示以下错误消息
“请输入正确的电子邮件和密码。请注意,这两个字段可能区分大小写。”
细节:
我遵循了Django Two-Factor Authentication的文档。我必须错过配置中的某些内容,但不知道确切。下面是我的代码中的详细信息。
设置.py
记录器看起来也不错
网址.py
在views.py中
注意:我的应用程序中有自定义用户模型,并在 admin.py 中注册了它们,除了这个问题之外,我还粘贴了该文件以便清楚。
管理员.py
请建议我哪里出错了。如果我不太清楚,请告诉我。谢谢!
python - 使用自定义 django 模型后无法登录
我已经用我的应用程序配置了 OTP。在将 otp_required 装饰器放在所需的方法上之后,我将重定向到/account/login。
这是two_factor auth附带的默认登录页面。提供正确的用户名(电子邮件)和密码后,它会返回错误。
重要的:
我如何检查我是否正确配置了自定义用户模型。有什么方法可以测试它或者我在哪里配置错误。
我已遵循此文档
如果您需要任何进一步的事情,请告诉我。谢谢!
authentication - 集成到 LDAP 的外部用户身份验证仅用于授权
我正在集成要与 LDAP(Active Directory/Open LDAP)一起使用的外部 OTP 解决方案。用户使用针对 LDAP 进行身份验证的用户 ID 和密码注册令牌,成功验证后,用户将使用令牌 ID 和用户 ID 在 OTP 系统中注册。
注册期间的 LDAP 流程:
- 使用 SSL 与帐户“CN=ServiceUser,DC=orgname,DC=local”(serviceUser) 和密码“svcPassword”(servicePassword) 绑定到 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 以检索 groupmember/nsrole 以提供系统中的正确访问权限。
身份验证期间的 LDAP 过程:
- 在通过匹配的 OTP 令牌成功进行身份验证后执行 LDAP 查找以获取授权。
- 使用 SSL 与帐户“CN=ServiceUser,DC=orgname,DC=local”(serviceUser)和密码“svcPassword”(servicePassword)绑定到 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)) % 战俘 (10,6)
它给了我一个结果:56024
但如果我使用这段代码:
它给了我一个结果:599808
如果我将二进制或十进制值写为数组中的值,将显示相同的不同结果。有人可以帮我解释我的错在哪里,这样我就可以计算手册和源代码,并给我一个相同的 HOTP 值。谢谢
web-services - 如何针对 Web 服务对本机应用程序进行身份验证?
我需要找到一个解决方案来确保我的应用程序将作为本地应用程序分发到移动设备上,并且只有我的应用程序可以访问我在其他地方托管的 Web 服务。换句话说,我的 Web 服务应该只接受通过合法使用我的应用程序的请求,而不是通过任何其他方式。
我想到的解决方案如下,请告诉我您是否认为有更好的解决方案,或者这个解决方案是否足够:
计数器同步一次性密码 (CS-OTP):基本思想是每一方(WS 和应用程序)都拥有一个硬编码的密钥和一个同步计数器。每次客户端应用程序向 WS 发送请求时,它都会使用密钥和计数器值生成一个哈希值。后端 WS 做同样的事情并比较哈希值,如果它们相同,则身份验证成功,并且双方都会增加它们的计数器以保持它们同步。由于每次成功尝试后计数器都会增加,因此哈希每次都会不同(因此名称为“一次性密码”)。
为什么我认为我需要一个一次性密码?因为如果密码或哈希值保持不变,客户端 App 用户可以很容易地截获它,然后可以在不需要 App 的情况下自行伪造请求。
告诉我你对这个解决方案的看法。
cryptography - OTP 谷歌账户。兼容的
我正在实施 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-authenticator 应用程序(android)相同的代码。(至少它仍然是一个 6 位数的值)。
我不太确定能很好理解的部分是:
有人可以给我一个更详细的解释吗?
谢谢,