问题陈述:
我希望使用FIDO2协议(通过提供SDK)解决Android应用程序上的用户身份验证问题,而不需要对同一设备上的不同应用程序进行多次注册仪式。例如,如果用户已在Android应用程序A中注册(生成的公钥对),则无需在Android应用程序B中注册(给定应用程序A和应用程序B位于同一设备上)。
可能的解决方案是什么(据我所知):-
我想继续使用解决方案1,因为解决方案2可能不可取,因为它需要额外的步骤来下载额外的应用程序(身份验证应用程序)。
我现在能实现什么:-我们可以通过维护应用程序A和应用程序B的单独私钥来对应用程序A和应用程序B的用户进行无密码认证。

在上图中:-
我想知道以下方案的可行性?我想对应用程序A和应用程序B的用户XYZ进行无密码认证,其中应用程序(应用程序A和应用程序B)可以使用相同的凭据(公钥和私钥对),并且不需要在同一设备上为共享公共SDK(app和app )的多个应用程序执行重复注册仪式(创建公钥和私钥)。

在上图中:-
,这可能吗?我的理解有什么差距吗?
任何建议和帮助都是值得赞赏的:)
发布于 2022-02-11 14:35:15
FIDO2凭据可以在API可用的任何地方重用,只要您在尝试身份验证时引用相同的RP ID即可。FIDO凭据绑定到唯一的RP ID,并且只要您能够证明RP的所有权,那么您就可以使用任何与该RP ID相关的凭据请求身份验证。
在安卓系统中,只要两个应用程序都连接到一个网站及其唯一的RP ID,就可以跨应用程序。要将应用程序连接到一个网站,请查看安卓的FIDO2 API文档,特别是它在与您的网站的互操作性上的部分。它链接到谷歌的页面,用于在您的站点上设置数字资产链接,这样您就可以证明RP的所有权,并使用与其相关的凭据进行跨应用程序的身份验证。
一旦您的应用程序和网站被链接,并且用户已经在一个应用程序中注册,那么您应该能够使用Fido2ApiClient.getSignPendingIntent()在您的第二个应用程序中进行身份验证,只要您指定站点的RP ID (注册过程中指定的相同ID)与传递给该方法的PublicKeyCredentialRequestOptions中的PublicKeyCredentialRequestOptions。
所有这些的好处是,您在本地应用程序中使用Fido2ApiClient (或其他平台上任何等效的API )注册的凭据稍后可以使用浏览器中的WebAuthn API登录到您的网站;您只需在传递给WebAuthn的navigator.credentials.get()的PublicKeyCredentialRequestOptions中引用相同的RP ID即可!
发布于 2022-02-15 09:20:40
FIDO2的主要优点之一是它可以防止中间人攻击,即攻击者试图冒充真正的应答方。FIDO2密钥只响应注册私钥的RP。跨多个RPs共享创作将打破此模型。我不知道在安卓设备上有什么可能,但我认为你需要某种形式的认证代理( IdP),你可以用密钥来验证它,它负责向应用程序证明自己的身份。
发布于 2022-02-11 14:35:13
这些帐户是否在同一服务上注册?阅读Android FIDO2 API 与您的网站的互操作性一节,似乎可以使用列出的多个Android应用程序来承载https://example.com/.well-known/assetlinks.json。
https://stackoverflow.com/questions/71078781
复制相似问题