问题标签 [yubico]
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.
yubico - 如何将现有的 RSA 密钥导入 YubiHSM?
我知道如何在 Yubikey 中做到这一点,但我有一个 YubiHSM2。不知道该怎么做。
以下内容适用于 Yubikey,不适用于 YubiHSM
fido-u2f - “Yubico 的安全密钥”如何识别每个密钥?
根据本页下面的句子, “Yubico 的安全密钥”没有序列号。
序列号在所有 YubiKey 型号中都是唯一的,但没有序列号的安全密钥除外。
但是,在Yubico 演示站点中,同一个“Yubico”只能在1 个密钥中注册安全密钥。
所以,我认为“Yubico”有一些机制可以在不使用序列号的情况下识别每个“Yubiko”。
那么,webserver中的authenticator如何识别每个没有序列号的key呢?
python - Django 和 Yubikey 集成
我想将 Yubikey 与我的 Django 应用程序集成。每当我尝试添加 2FA Yubikey 时:localhost:8080/account/two_factor/setup/
我得到一个403 HTTP Forbidden
错误。如何在 Django 中实现 Yubikey,因为当我使用这些教程时,实现会失败。
当我按照这里的示例做同样的事情时,我得到一个Server Error 500
我遵循了这些教程:
这就是我所做的:
我使用 Python 3.7.3 和 Django 3.0.8
在我的settings.py
我补充说:
在我的urls.py
我补充说:
在我的views.py
我添加了:
我home.html
的很简单:
堆栈跟踪:
c# - 如何在 UWP C# 应用程序中使用 Yubikey 使用 PIV 签署 PDF?
我正在尝试使用 PIV 为我的 Windows 应用程序(UWP Xamarin C# .NET)实现 YubiKey HSM。我找到了几种与 YubiKey FIPS 通信的方法,但效果不佳。正如 Yubico 网站中所建议的那样,我尝试使用 PKCS11 和 Pkcs11Interop nuget 包。
https://developers.yubico.com/yubico-piv-tool/YKCS11/
我尝试了 Pkcs11Interop GitHub ( https://github.com/Pkcs11Interop/Pkcs11Interop/blob/master/doc/GETTING_STARTED.md ) 中给出的示例。
但是当我尝试运行时,它会抛出“方法 C_GetSlotList 返回 CKR_DEVICE_ERROR”这个错误。
请帮我解决这个问题或为我提供一个库/代码示例,这可能对我的实现有所帮助。
提前致谢。
python - 在 Python 中生成 YubiOTP 验证 HMAC-SHA-1 签名
我对我需要在这里为 Python 做的事情有点困惑,但是从用于验证具有 YubiOTP 的 Yubikey 的 Yubikey API 文档中,需要以特定的方式生成 HMAC 签名 - 从他们的文档中:
生成签名
该协议使用 HMAC-SHA-1 签名。要使用的 HMAC 密钥是客户端 API 密钥。
在消息中的参数上生成签名。每条消息都包含一组键/值对,并且签名始终覆盖整个集合(不包括签名本身),并按键的字母顺序排序。更准确地说,要生成消息签名,请执行以下操作:
按键顺序按字母顺序对键/值对集进行排序。
构造一行,每个有序键/值对使用 & 连接,每个键和值使用 连接
=
。不要添加任何换行符。不要添加空格。例如:a=2&b=1&c=3
。使用 API 密钥作为密钥,将 HMAC-SHA-1 算法作为八位字节字符串应用在线路上(记得对从 Yubico 获得的 API 密钥进行 base64decode)。
Base 64 根据 RFC 4648 对结果值进行编码,例如
t2ZMtKeValdA+H0jVpj3LIichn4=
.将键 h 下的值附加到消息中。
现在我从他们的文档中对他们的 API 的理解说明了以下有效的请求参数:
id
- Yubico API 的客户端 IDotp
- 来自 yubikey 的 YubiOTP 组件的 YubiOTP 值。h
- 请求的 HMAC-SHA1 签名timestamp
- empty 什么都不做,1
在服务器回复中包含时间戳nonce
- 包含随机唯一数据的 16 到 40 个字符长的字符串。sl
- 一个 0 到 100 的值,表示客户端所需的同步百分比,或字符串“快速”或“安全”以使用服务器值;如果不存在的服务器决定timeout
- 等待同步响应的秒数;让服务器决定是否缺席。
我总共尝试使用两个函数来尝试处理所有这些事情并生成 URL。即,我们支持 HMAC 功能并verify_url_generate
生成 URL(并且API_KEY
是静态编码的 - 我来自 Yubico 的 API 密钥):
由此生成的任何 URL 都会触发来自远程站点的关于“BAD_SIGNATURE”的通知 - 任何生成的 URL 减去 HMAC sig ( h=
) 参数都有效。所以我们知道问题不在于 URL,而在于 HMAC 签名。
有谁知道我的 HMAC 生成方法做错了什么,通过将 HMAC sig 生成器从有序 dict 中的串联参数传递key=value
给&
每个参数格式?
yubico - 使用 PKCS11 从 YubiKey 生成密钥对需要哪些对象属性?
我的应用程序想要使用YubiKey和PIV ( PKCS11 ) 签署文件。我能够登录到我的 YubiKey,但是当我尝试生成 KeyPairs 时,它会引发此错误。
“方法 C_GenerateKeyPair 返回CKR_ATTRIBUTE_VALUE_INVALID ”
这是我现在拥有的代码(C# .NET)
javascript - 使用 Yubikey 的 WebAuthn 身份验证 API 异常
我正在努力为新创建的网站添加 WebAuthn 支持,并且在 navigator.credentials.get() 调用期间遇到了问题。客户端是 Fedora 33 上的 Firefox 85.0。如果重要,服务器是 Fedora 33 上的 Apache httpd。令牌是 Yubikey 4 或 Yubikey 5NFC(结果相同)。这是进行 API 调用的函数。显然,这里硬编码的凭证 ID 用于测试,而不是最终产品的一部分:
一切似乎都正常,Yubikey LED 闪烁,我按下触摸板,但随后我得到一个异常:
这似乎有点像 Firefox 的包罗万象。它可能表明令牌与 allowedCredentials[] 之一或其他内容不匹配。很难说。Yubikey 上的 FIDO2 凭证是使用与 libfido2 源打包的 fido2-cred(1) 工具创建的。在这种情况下,credentialId 来自fido2-cred -M
输出:
您可以在第 5 行看到 credentialId,它cid1
在 Javascript 函数中匹配。此外,如果我使用此 credentialId 从令牌请求断言,并且所有其他相同(除了挑战)与fido2-assert -G
,一切正常:我得到断言并使用fido2-assert -V
.
如果没有更有意义的诊断,很难知道要尝试什么,所以我想我会在这里问一下,看看是否有人有任何提示。也许我在使用 Javascript 或凭证 API 时犯了一些基本错误?
谢谢!
更新:我认为值得尝试的一种可能性是从 RP ID 中删除该方案,但这没有任何区别。
更新:查看 firefox 源代码,错误显然是 NS_ERROR_DOM_INVALID_STATE_ERR,它涵盖了几种不同的情况,但在这种情况下很可能是 U2F_ERROR_INVALID_STATE 的翻译(在 dom/webauthn/U2FHIDTokenManager.h 中)。反过来,U2F_ERROR_INVALID_STATE 在 third_party/rust/authenticator/src/u2fhid-capi.h 中定义为一个简单的数值 (3),没有说明该值的来源。也许它是由 Yubikey 的底层 HID 驱动程序定义的,但不清楚对应的驱动程序是什么。狩猎仍在继续……
yubico - Yubikey AAGUID 元数据的来源?
我正在为 Yubikey AAGUID 值寻找可靠的机器可读源。我看到的最有可能的来源是Yubikey Attestation Metadata,但这似乎很不完整。Yubikey Hardware FIDO2 AAGUIDs上提供了更全面的表格列表,但它嵌入在博客文章中,因此 (a) 它必须被删除,并且 (b) 不太可能随着时间的推移保持最新。是否有可靠的 URI 可用于下载始终是最新/完整的元数据?
谢谢!
javascript - Webauthn API 是否允许客户端检测/识别令牌?
正如您可能从之前的问题中注意到的那样,我正在构建一个网站,该网站将支持使用 Yubikeys 通过 Webauthn 进行身份验证(以后可能会使用其他令牌)。作为该过程的一部分,我希望能够(1)检测身份验证令牌是否已经存在,因此如果没有,我可以提示用户插入一个,以及(2)确定插入的令牌类型,因此我可以包含令牌的图像以及有关如何使用它的有用动画/说明,以便他们通过(使用 Yubikeys)按下触摸板或其他联系人来验证其存在。
顺便说一句,我在 navigator.credential API 中看不到任何似乎表明这是可能的东西,如果允许客户端代码探测设备,也许它会违反各种 Javascript 安全限制,但我只是想知道是否有人有任何关于如何做到这一点的提示?
谢谢!
android - 我可以将手机用作带有 Windows 10 登录选项的 webauthn 安全密钥吗
编辑: -
看看是我还是W3C 规范没有说这应该已经发生了:-
1.2.2。验证
在笔记本电脑或台式机上:
用户通过蓝牙将手机与笔记本电脑或台式机配对。
用户在浏览器中导航到 example.com 并开始登录。
用户从浏览器收到一条消息,“请在您的手机上完成此操作。”
接下来,在他们的手机上:
用户会看到离散提示或通知“登录 example.com”。
用户选择此提示/通知。
向用户显示他们的 example.com 身份的列表,例如,“以 Mohamed 身份登录/以张三身份登录”。
用户选择一个身份,提示输入授权手势(PIN、生物识别等)并提供。
现在,回到笔记本电脑上:
网页显示所选用户已登录,并导航到登录页面。
================
我的 WebAuthn 代码愉快地与 Windows Hello 交互,以通过 PIN 进行用户验证。我的三星 Android 手机愉快地与https://webauthn.appspot.com演示交互并接受指纹验证。
但我似乎无法将我的手机用作连接到我计算机上的 YubiKey 之类的安全密钥?
我可以通过蓝牙将它与 PC 配对或用 USB 电缆连接它,但 Windows 不会将它识别为安全密钥。
这是可能的,还是功能受到限制?如果我们可以使用我们的手机作为安全密钥,我们就不需要特殊的加密狗来进行平台无关的身份验证。