首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用FIDO 2协议,多个Android应用程序(相同的设备)可以共享相同的密钥对进行无密码认证吗?

使用FIDO 2协议,多个Android应用程序(相同的设备)可以共享相同的密钥对进行无密码认证吗?
EN

Stack Overflow用户
提问于 2022-02-11 10:44:04
回答 4查看 646关注 0票数 9

问题陈述:

我希望使用FIDO2协议(通过提供SDK)解决Android应用程序上的用户身份验证问题,而不需要对同一设备上的不同应用程序进行多次注册仪式。例如,如果用户已在Android应用程序A中注册(生成的公钥对),则无需在Android应用程序B中注册(给定应用程序A和应用程序B位于同一设备上)。

可能的解决方案是什么(据我所知):-

  1. 一个与应用程序A和B集成的通用SDK来提供身份验证。
  2. 单独认证应用程序。

我想继续使用解决方案1,因为解决方案2可能不可取,因为它需要额外的步骤来下载额外的应用程序(身份验证应用程序)。

我现在能实现什么:-我们可以通过维护应用程序A和应用程序B的单独私钥来对应用程序A和应用程序B的用户进行无密码认证。

在上图中:-

  1. 用户XYZ登录到App,并在此设备上向应用程序A注册自己。
  2. 在注册步骤中,身份验证者将生成一个公钥对。
  3. PrivateKey_1(PrivateKey)被创建并存储在Keystore中,PublicKey_1(PublicKey)被创建并与服务器共享。
  4. 现在假设用户XYZ想要登录到应用程序B。对于用户XYZ来说,重复相同的过程,以便在应用程序B中注册他。
  5. 在此过程中,PrivateKey_2被创建并存储在Keystore中,PublicKey_2被创建并与服务器共享。
  6. 因此,在上面的场景中,用户XYZ可以分别使用私钥PrivateKey_1和PrivateKey_2在App和App上进行身份验证。

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

在上图中:-

  1. 用户XYZ登录到App,并在此设备上向应用程序A注册自己。
  2. 在此过程中,PrivateKey_1被创建并存储在Keystore中,PublicKey_1被创建并与服务器共享。
  3. 用户XYZ想要登录到应用程序B。
  4. 应用程序B应该能够使用以前生成的凭据(通过应用程序A)来验证用户XYZ。

,这可能吗?我的理解有什么差距吗?

任何建议和帮助都是值得赞赏的:)

EN

回答 4

Stack Overflow用户

发布于 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即可!

票数 3
EN

Stack Overflow用户

发布于 2022-02-15 09:20:40

FIDO2的主要优点之一是它可以防止中间人攻击,即攻击者试图冒充真正的应答方。FIDO2密钥只响应注册私钥的RP。跨多个RPs共享创作将打破此模型。我不知道在安卓设备上有什么可能,但我认为你需要某种形式的认证代理( IdP),你可以用密钥来验证它,它负责向应用程序证明自己的身份。

票数 1
EN

Stack Overflow用户

发布于 2022-02-11 14:35:13

这些帐户是否在同一服务上注册?阅读Android FIDO2 API 与您的网站的互操作性一节,似乎可以使用列出的多个Android应用程序来承载https://example.com/.well-known/assetlinks.json

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71078781

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档