我使用Firefox内置的U2F API和Chrome的JavaScript U2F API实现了基于U2F的桌面浏览器。我遵循了这里的基本配方:
https://github.com/castle/ruby-u2f
对于每个物理设备,我有4个属性:
我相信(但我不确定),在获取了关于这个物理设备的这些信息之后,我现在可以在移动设备上呈现完全相同的网页时重新使用它来实现WebAuthn,它将呈现一个移动OS本机接口来请求NFC身份验证(如果设备有NFC的话),而不是呈现一个供用户验证的网页。
我试图使用上面的4个属性来呈现带有nav.credentials.get的javascript,但我被卡住了。
我不清楚下列哪一项是正确的
A)您可以使用桌面web上U2F设备注册过程中收集并验证的凭据/信息,通过web Autht在移动端进行身份验证n
B)如果您希望在移动端使用web authn以便它可以触发本机移动NFC身份验证过程,那么除了常规的U2F流之外,您还必须秘密地处理webauthn注册(所谓“秘密”,我不是指您有意不告诉用户他们正在这样做,而是用户不知道a和B之间的区别)。
按照上面链接的示例,他们的javascript如下所示:
var appId = <%= @app_id.to_json.html_safe %>
var registerRequests = <%= @registration_requests.to_json.html_safe %>;
var signRequests = <%= @sign_requests.as_json.to_json.html_safe %>;
u2f.register(appId, registerRequests, signRequests, function(registerResponse) {
var form, reg;
if (registerResponse.errorCode) {
return alert("Registration error: " + registerResponse.errorCode);
}
form = document.forms[0];
response = document.querySelector('[name=response]');
response.value = JSON.stringify(registerResponse);
form.submit();
});
使用下面的mozilla示例:
https://developer.mozilla.org/en-us/docs/web/api/publickeycredentialrequestoptions
var appId = <%= @app_id.to_json.html_safe %>
var registerRequests = <%= @registration_requests.to_json.html_safe %>;
var signRequests = <%= @sign_requests.as_json.to_json.html_safe %>;
var options = {
challenge: new Uint8Array([/* bytes sent from the server */]),
rpId: "example.com" /* will only work if the current domain
is something like foo.example.com */
userVerification: "preferred",
timeout: 60000, // Wait for a minute
allowCredentials: [
{
transports: "usb",
type: "public-key",
id: new Uint8Array(26) // actually provided by the server
},
{
transports: "internal",
type: "public-key",
id: new Uint8Array(26) // actually provided by the server
}
],
extensions: {
uvm: true, // RP wants to know how the user was verified
loc: false,
txAuthSimple: "Could you please verify yourself?"
}
};
navigator.credentials.get({ "publicKey": options })
.then(function (credentialInfoAssertion) {
// send assertion response back to the server
// to proceed with the control of the credential
// update the hidden form input then
form.submit();
}).catch(function (err) {
console.error(err);
});
但不清楚如何将U2F属性映射到webauthn属性。我似乎找不到一个具体的例子,但我可以肯定它是可行的,因为GitHub和DropBox都有这样一个确切的流程--你在桌面web上注册U2F设备,然后NFC设备就可以在本地移动设备上使用了。
顺便说一句,我想要实现这一点的原因是,用户在本机移动端,从来不需要离开您的web应用程序,本机NFC界面被呈现,他们被神奇地带回您的web应用程序。我目前拥有的是,如果移动检测到,呈现OTP界面,这需要用户切换到Authy这样的认证器应用程序,然后复制OTP并返回到mobile Web。把你的钥匙拔出来然后按一下就好了。
谢谢你的帮助,凯文
使用navigator.credentials.get()时,确保设置扩展名:{appId:u2f_appid},即在U2F.register调用期间设置U2F appId参数。在我的例子中,我使用了origins.json trustedfacet列表URL。
https://developer.mozilla.org/en-us/docs/web/api/publickeycredentialrequestoptions/extensions
您需要设置extensions.appid参数的原因是,如果WebAuthn rpId失败,它将使用extensions.appid参数回退到旧的U2F
我已经在的Jenkins中输入了AWS凭据,但是它们不会显示在AWS Elastic Beanstek插件中的Post Build步骤的下拉列表中。 如果我单击验证凭据,我会得到这个奇怪的错误。 失败com.amazonaws.SdkClientException:无法从链中的任何提供者加载AWS凭据:[环境变量凭据提供者:无法从环境变量(AWS_ACCESS_KEY_ID(或AWS_ACCESS
我想ssh到代理后面的机器,然后在我的java程序中进行portforwarding。(为了能够ssh到盒子,我应该先ssh到代理机器)。我通常通过在我的~/.ssh/config文件中添加以下条目来实现: 谢了!
我为我的spring boot应用程序开发集成测试,该应用程序与Cassandra一起工作。我使用与Cassandra通信。 有什么方法可以将Testcontainers Cassandra与Spring数据一起用于Apache Cassandra吗?
抱歉,如果这个帖子不好,这是我在这里的第一个问题:)
问题内容: 我正在使用Spring,Spring Data JPA,Spring Security,Primefaces的项目中工作… 在本教程中,你只能在预定义的数据源之间实现动态数据源切换。 这是我的代码的片段: springContext-jpa.xml 我想做的就是使targetDataSources映射也与其元素一样动态。 换句话说,我想获取某个数据库表,使用存储在该表中的属性创建我的数
我在一个使用Spring、Spring数据JPA、Spring Security、Primefaces的项目中工作。。。 我正在学习关于spring动态数据源路由的教程。 在本教程中,您只能在预定义的数据源之间实现动态数据源切换。 以下是我的代码片段: springContext jpa。xml 我想做的是使targetDataSources映射与它的元素一样动态。 换句话说,我想获取一个特定的数