问题标签 [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.
security - 什么 OCRASuite 值在 OATH 挑战-响应算法中使用“Protectimus”?
我在生成 OCRA 时遇到问题,客户端和服务器需要就 OCRASuite 的一两个值达成一致,但我在 PROTECTIMUS 官方网站上找不到有关 OCRASuite 的任何信息。
totp - TOTP:秒数吗?
在设备上:如果现在生成 TOTP,它会持续到最后几秒还是四舍五入到最接近的 00?
例如,如果我在 22hr:30m:2s:33ms(在 UTC 中检查)生成 TOTP,它是否四舍五入到 22hr:30m:0s:00ms 然后生成?
我有这个问题是因为,如果我要在 22hr:30m:2s:33ms 生成 TOTP,并且如果服务器要在 22hr:30m:6s:40ms 验证它,那么 totp 会不会有所不同?即使我们使用 3 个步骤,每个步骤 30 秒,我们不会错过 22hr:30m:2s:33ms 停止吗?
我想我在这里错过了重点。
java - 在网站上动态显示二维码(不先保存)(Java)
我是网页设计和构建使用双重身份验证的网站(使用 Google Authenticator 应用程序)的新手。注册为新用户时,用户填写一个表格,在其中选择用户名和密码。提交后,系统会为用户生成一个唯一的密钥,并将其转换为二维码,供用户使用他们的身份验证器应用程序扫描,从而通过手机生成一次性密码。
二维码在 Java servlet 中生成;我的想法是,然后我会将其作为请求参数传递给相应的 JSP,因为我希望此 QR 码显示在下一页上,以及用户输入一次性密码以验证其注册的另一种形式。我不确定执行此操作的最佳方法;有没有办法做到这一点,而无需先将二维码写入图像文件?我看过使用 Google Charts,但现在不推荐使用 QR 码的 API。
java - TOTP / HOTP / HmacSHA256 与 Java 中的无符号字节密钥
从以下问题我们可以看出:
用于 HOTP 的 Java 与 Golang (rfc-4226)
, 在 TOTP / HOTP / HmacSHA256 用例中使用密钥时,Java 并不能很好地发挥作用。我的分析是以下造成的麻烦:
String.getBytes
(当然)将为字符值 > 127 的字符提供负字节值;javax.crypto.Mac
并且javax.crypto.spec.SecretKeySpec
在外部和内部都byte[]
用于接受和转换密钥。
我们已经获得了一些飞天 C-200 单按钮 OTP 设备,它们带有一个由大于 127 的字节值组成的十六进制字符串密码。
我们已经成功地为这些代币创建了一个使用 Ruby 的 PoC,它可以完美运行。由于我们想将这些集成到Keycloak中,我们需要找到一个 Java 解决方案。
由于我们看到的每个 TOTP / HOTP / HmacSHA256 实现都使用了javax.crypto
库和byte[]
,因此我们担心我们必须重写所有使用的类,但要使用int
才能支持这种情况。
问:还有其他方法吗?我们如何在 Java 中的 HmacSHA256 计算中使用秘密,其中字节的值 > 127 而不必重写所有内容?
更新
我看错了方向。我的问题是密钥表示为一个字符串(Java 中的 UTF-16),其中包含 Unicode 字符,这些字符在传递getBytes()
到SecretKeySpec
.
强制StandardCharsets.ISO_8859_1
进行此转换可以解决问题。
node.js - 2FA 的特定于令牌的声明
我希望为 Firebase 身份验证(使用电子邮件/密码身份验证)实现我自己的自定义 2FA(基于TOTP,例如可由 Google Authenticator 和类似应用程序使用)。验证代码很简单。实现 TOTP 或在云功能中使用库,并针对从客户端发送的代码进行测试。但是,记住会话是有效的(已通过 2FA 认证)是另一回事。我可以尝试自定义声明,但这些声明适用于所有新会话,而不仅仅是当前会话。
我想做的是以某种方式从云函数中发出一个新的 ID 令牌,其中包含仅存在于该令牌上而没有未来的自定义声明(例如trusted: true
) 。
java - 如何生成密钥以获得 HMAC SHA512 的 TOTP 符合 RFC6238 和 RFC4086?
我必须向 URL http://example.com/test发出 HTTP POST 请求,其中包含 JSON 字符串作为正文部分、标题“Content-Type:application/json”和“Authorization: Basic userid:password”。用户 ID 是 abc@example.com,密码必须是 10 位基于时间的一次性密码,符合 RFC6238 TOTP,使用 HMAC-SHA-512 作为哈希函数。
令牌共享密钥应为“abc@example.comTEXT5”,不带双引号。
所以,为了实现上面我修改了 RFC6238 RC6238 TOTP Algo的 Java 代码
为了获得 TOTP,我使用在线转换器工具将共享密钥“abc@example.comTEXT5”转换为 HMAC-SHA512 ,以及一些生成相同的 128 个字符长度的十六进制代码的代码
发出请求总是响应“TOTP 错误”。
我注意到我生成了错误的密钥,所以 TOTP 错误。那么,如何生成符合 HMAC-SHA512 和 RFC6238 算法的 Java 代码的正确密钥?
算法中有默认密钥作为种子:
我怎样才能为我的共享秘密“abc@example.comTEXT5”获得这样的种子64?我修改后的代码是10 位 TOTP
我感谢大家的帮助!
twilio - 是否可以以编程方式生成 Twilio“OneCode”TOTP 令牌?
目标
我有一个与 AWS 对话的后端服务,以及一个获取 AWS 信用的自动化工具。cred-getter 启用了 MFA(不是我的选择),但我不想输入或复制代码。相反,我想编写一些代码,可以以编程方式生成或获取 TOTP 软令牌,而无需发短信或打电话给任何人。所以今天我们的工作流程是这样的:
但我希望它看起来像这样:
问题
有没有办法 curl Authy 或 Twilio 以编程方式获取这些软令牌之一?
现有文档
有一种与这个问题相关的圆形文档迷宫,但我无法打破这个圈子。
我看到本机移动 SDK 可以生成 TOTP 令牌: https ://www.twilio.com/docs/authy/twilioauth-sdk/quick-reference#time-based-one-time-passwords-totp
但我想在笔记本电脑(或云功能或某个地方)上生成一个令牌。Authy Desktop 客户端正在这样做,所以我知道一定有办法。但我不知道公开曝光了什么。
这个问题是相关的:how to get Google or Authy OTP by API
但唯一的答案仍然取决于 twilio 调用和文本:如何通过 API 获取 Google 或 Authy OTP,这样会非常昂贵
c# - 将 TotpSecurityStampBasedTokenProvider 用于 TOTP 和 Google Authenticator
我在我的 asp.net web api 2 webservice(不是 .net 核心)上使用 TOTP 实现 2FA。
该实现使用Microsoft.AspNet.Identity 框架提供的TotpSecurityStampBasedTokenProvider 。
在查看 Google Authenticator 要求时,它列出了密钥需要是 base32 编码的字符串。
如果您查看来自 TotpSecurityStampBasedTokenProvider 的代码,它使用用户的 SecurityStamp 作为由身份框架生成的秘密。这是一个 GUID,而不是 base32 编码的字符串。
根据Google Authenticator的规范,要求密钥是 base32 编码的字符串。
如何使用 TotpSecurityStampBasedTokenProvider 与 Google Authenticator 一起使用?
java - Google 身份验证 - TOTP 检查剩余秒数
基于时间(20 秒有效期)的谷歌验证码,我需要在读取 4 位数代码之前检查时间。
- 使用 TOTP 收集 google auth 代码
- 在我们的应用程序中自动应用代码
问题,在读取边缘的代码(18/19 秒),并自动将代码发送到我们的文本框,但有效性已过期且身份验证失败。所以我想检查代码以及有效期
一个。如果有效时间大于 10 秒,我可以获得代码并将其传递给文本框 b。如果有效期小于10秒,等待10秒
代码:
jar 文件
参考上面,让我知道如何获得OTP的有效时间?
twilio - 使用 Authy API 时,有没有办法为用户更新 OTP 密码?
我正在使用 Authy API 进行 TOTP 身份验证。许多用户更喜欢使用 google 身份验证器,并且不想下载 Authy 应用程序。因此,我使用此处提到的 authy API 来获取 Google Authenticator 的 QR 码(https://www.twilio.com/docs/authy/api/one-time-passwords#other-authenticator-apps)。
我在这里看到的一个安全问题是,用户可能希望不时更改他们的身份验证器密码,而 twilio 没有直接的 API 来更新密码。有没有办法达到这个结果?
我能想到的一种解决方案是删除使用并创建一个新的,但我希望找到更好的选择。