在iOS中卸载应用程序时如何从钥匙串中删除存储的用户名和密码?

问题描述

对于为我的应用程序和购物应用程序实施生物识别身份验证,我还很陌生,我正在使用以下逻辑来实现同样的功能。如果这不是发布此问题的正确位置,请与我联系。我请主持人转到相应的论坛 。目前,我们仅将用户名存储为AES加密格式(甚至不在钥匙串中),因为客户端对在应用程序中存储密码也不满意。但是由于必须执行生物识别,所以我遵循以下给出的逻辑:逻辑如下:

首次登录

  1. 用户使用用户名/密码进行身份验证

  2. 如果身份验证成功,则会询问他们是否要使用TouchID / FaceID

  3. 如果这样做,用户名和密码将存储在钥匙串中,并带有一个 生物特征认证访问数据的要求

    在以后的登录中:

  4. 应用程序尝试检索存储的用户名/密码触发 生物特征认证

  5. App使用存储的用户名和密码对服务器进行身份验证。

我能够成功实现相同的功能,但是我有一个查询,如果我卸载该应用程序,它们会删除钥匙串中存储的凭据。我已经提到了很多SO问题,但我无法给出特定答案。如果在卸载应用程序后它仍然存在,该如何删除它们?

解决方法

在Apple开发者论坛上有一个post。它基本上告诉我们,即使在删除并重新安装应用程序之后,KeyChain仍然是持久的(这意味着应用程序可以从技术上再次使用旧密钥)。这种行为不是真正的预期行为(如果您仔细阅读了该线程)。

为应对这种行为,论坛通过在UserDefault存储中设置一个标志(在卸载应用程序后会删除 )来提供解决方案。用户首次运行该应用程序时,请清除KeyChain并设置标志。这样,您几乎可以确定在首次使用之前就已删除了密钥。

要直接回答您的问题,目前(截至目前)尚无法确定何时卸载了应用程序并采取了相应措施。