gpt4 book ai didi

oauth-2.0 - 带有 Touch ID 的 OAuth2 应用

转载 作者:行者123 更新时间:2023-12-04 12:45:43 25 4
gpt4 key购买 nike

第三方应用程序有什么方法可以在逻辑上使用 Touch ID 对使用 OAuth2 的 Web 服务进行身份验证?

假设我拥有一个需要使用 OAuth2 进行身份验证的 Web 服务。它同时支持 implicit and authorization-code grants (尽管如有必要,我可以添加对其他赠款的支持)。

第三方拥有使用此网络服务的移动应用程序。它打开一个 native Web View 进行身份验证,并在其中加载我的身份验证 URL。用户在我的域中输入他们的用户名/密码,然后我将 OAuth token 返回给应用程序。

如果这个应用程序想要实现 Touch ID 来加速身份验证,有没有一种方法对 OAuth2 有意义?

我的理解是,OAuth2 隐式和授权码授权的目的是防止父应用程序访问用户的凭据。它只能访问生成的 OAuth token ,并且仅在有限的时间内有效。

使用 Touch ID,您通常会使用 Keychain Services 存储密码。 .因此,这显然需要您访问密码。

我想他们可以将 OAuth token 存储在钥匙串(keychain)中而不是密码中,但这只会在短时间内有效。

最佳答案

我还不知道任何标准流程,但这里有一些常见的注意事项。简单地存储长期凭证(密码或刷新 token ,甚至在静止时加密)将以难以审计的方式混淆安全上下文。使用任何本地身份验证(特定于应用程序的解锁 PIN、任何生物识别或简单的系统解锁)时,以服务器可以验证的方式执行此操作非常重要。因此,第一步是设备身份验证,您的应用程序的每个实例都应使用唯一的客户端 ID/客户端凭据(我建议实现 Dynamic Client Registration Protocol 来帮助解决此问题,但可能还有其他选项)。然后,最好直接在设备上生成一些可验证的 key 信息,将其放入安全存储中(受任何本地解锁机制保护,并在生物特征发生变化时失效)并使用它来生成某种 MAC,用于作为 jwt-bearer flow 一部分的 JWT 示例(或 OAuth 断言框架的一些新扩展)。 JWT token 可以包含可以为服务器提供更多上下文的附加元数据(声明),例如它可以做出明智的决定以在某些情况下强制重新身份验证。
重申:

  • 设备已获得授权并颁发了唯一的客户端凭据对。
  • 本地生成的 key 保存在加密存储中,并受一些本地解锁机制(系统锁屏、PIN、生物识别等)保护
  • key 在服务器上注册并绑定(bind)到设备。
  • 解锁时, key 用于生成 JWT,用作与服务器进行身份验证的断言。

  • 对我来说似乎很标准,也许有人应该在考虑所有实现细节、当前实践和安全考虑之后为此编写一个 BCP。

    关于oauth-2.0 - 带有 Touch ID 的 OAuth2 应用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45825704/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com