热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

没有密码回退的TouchID的SecItemCopyMatching

如何解决《没有密码回退的TouchID的SecItemCopyMatching》经验,为你挑选了3个好方法。

SecItemCopyMatching用来获取受Touch ID保护的钥匙串项目.

但是,如果Touch ID解锁失败(或用户选择"输入密码"),我想呈现自己的PIN输入UI.

我不希望在任何时候向用户呈现系统密码输入UI.

LAContextevaluatePolicy方法提供了这一点,但不提供任何实际的钥匙扣安全,仅仅是本地认证.

因此,我不会用它LAContext来实现这一点.这有可能SecItemCopyMatching吗?



1> Keith Cought..:

在iOS 8.3及更高版本中,密码后备选项最初是隐藏的,但如果无法识别第一个手指,则仍会显示.

对于iOS 9,添加了两个不会回退到密码的新策略.这些策略是kSecAccessControlTouchIDAny和kSecAccessControlTouchIDCurrentSet



2> bllakjakk..:

在我们的一个正在制作的应用程序中工作时,我们遇到了类似的困境.我们意识到我们需要触摸ID解锁以及自定义回退机制(需要服务器API进行解锁),这比4位数的解锁密码更强.

那么,让我试着解释一下我们是如何实现它的.预计苹果公司将购买Appstore和1Password应用程序.

背景:

两种集成Touch ID的机制:

    使用Touch ID访问存储在钥匙串中的凭据

    问题:

    如果设备也具有Touch ID,则首选方法是使用Touch ID进行身份验证,密码是备份机制

    不允许使用其他回退机制,Apple不允许自定义回退用户界面

    使用Touch ID直接向应用程序进行身份验证(称为本地身份验证)

    问题:

    未授权从Secure Enclave存储机密或检索机密

    与钥匙串访问案例相反,Apple不允许将设备密码验证作为备份 每个应用程序都需要提供自己的备用,以便使用自定义UI处理失败的Touch ID案例

关心:

关于在钥匙串中存储敏感信息:

我们很想使用这种方法,但是由于意识到没有使用Touch ID进行身份验证的唯一后备是设备密码而感到吃惊.iOS用户通常配置一个四位数密码,这比用户自定义密码安全性低.

整容举例:

Apple使用您的iCloud帐户密码[自定义回退机制]作为itunes商店购买的后备机制,如果用户无法使用Touch ID进行身份验证.

1Password app也有类似的方法.


结论

在我们的应用程序中,我们通过LocalAuthentication使用Touch ID进行身份验证,我们使用"应用程序特定的PIN解锁功能"或客户端密码作为回退机制.

我们不会在设备上存储密码,如果设备没有在应用程序中配置PIN,则无法通过Touch ID进行身份验证需要通过服务器API进行完全身份验证.

示例代码:

[self.laContext evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics
               localizedReason:reason
                         reply:^(BOOL success, NSError *error) {
                             if (success)
                                 dispatch_async(dispatch_get_main_queue(), ^{ successBlock(); });
                             else
                                 dispatch_async(dispatch_get_main_queue(), ^{ fallbackBlock(error); });
                             self.laCOntext= nil;
                         }
];



3> ProgrammierT..:

这应该是对bllakjakk的评论,但我的声誉不允许我这样做.

我只是添加了这个答案,因为问题是专门询问:

获取受Touch ID保护的钥匙串项目

接受的答案提到了设备上没有存储凭据的情况.

为了完整起见,我想提一下,如果您的应用需要对某个外部实体进行身份验证,因此您必须在某处存储凭据,那么Key-Chain选项是通过本地身份验证考虑的选项.

如果他们知道设备密码(可能是弱四位数等等),那么有人能够通过Key-Chain的回退进行身份验证,这是一个没有实际意义的点,因为没有任何东西可以防止用户将自己的指纹添加到设备中他们拥有密码,然后通过密钥链或本地身份验证进行身份验证,而无需选择回退.

因此,如果您使用基于密钥链的本地身份验证,因为您觉得回退机制更安全,那么您可能会忽略那些细微的细节,因此可以放弃在安全区域中存储凭据的机会.

我们即将为财务应用程序实施TouchID,并选择Key-Chain.目的是让用户了解在尝试为我们的应用启用TouchID时对强设备密码的需求.

我希望这可以帮助你做出决定.


推荐阅读
  • Web动态服务器Python基本实现
    Web动态服务器Python基本实现 ... [详细]
  • 本文详细探讨了在Web开发中常见的UTF-8编码问题及其解决方案,包括HTML页面、PHP脚本、MySQL数据库以及JavaScript和Flash应用中的乱码问题。 ... [详细]
  • 使用 ModelAttribute 实现页面数据自动填充
    本文介绍了如何利用 Spring MVC 中的 ModelAttribute 注解,在页面跳转后自动填充表单数据。主要探讨了两种实现方法及其背后的原理。 ... [详细]
  • 我在尝试将组合框转换为具有自动完成功能时遇到了一个问题,即页面上的列表框也被转换成了自动完成下拉框,而不是保持原有的多选列表框形式。 ... [详细]
  • iOS如何实现手势
    这篇文章主要为大家展示了“iOS如何实现手势”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“iOS ... [详细]
  • 如何高效学习鸿蒙操作系统:开发者指南
    本文探讨了开发者如何更有效地学习鸿蒙操作系统,提供了来自行业专家的建议,包括系统化学习方法、职业规划建议以及具体的开发技巧。 ... [详细]
  • 一、使用Microsoft.Office.Interop.Excel.DLL需要安装Office代码如下:2publicstaticboolExportExcel(S ... [详细]
  • 数据输入验证与控件绑定方法
    本文提供了多种数据输入验证函数及控件绑定方法的实现代码,包括电话号码、数字、传真、邮政编码、电子邮件和网址的验证,以及报表绑定和自动编号等功能。 ... [详细]
  • 尽管在WPF中工作了一段时间,但在菜单控件的样式设置上遇到了一些基础问题,特别是关于如何正确配置前景色和背景色。 ... [详细]
  • 问题场景用Java进行web开发过程当中,当遇到很多很多个字段的实体时,最苦恼的莫过于编辑字段的查看和修改界面,发现2个页面存在很多重复信息,能不能写一遍?有没有轮子用都不如自己造。解决方式笔者根据自 ... [详细]
  • 本文将从基础概念入手,详细探讨SpringMVC框架中DispatcherServlet如何通过HandlerMapping进行请求分发,以及其背后的源码实现细节。 ... [详细]
  • 本文通过分析一个具体的案例,探讨了64位Linux系统对32位应用程序的兼容性问题。案例涉及OpenVPN客户端在64位系统上的异常行为,通过逐步排查和代码测试,最终定位到了与TUN/TAP设备相关的系统调用兼容性问题。 ... [详细]
  • 本文将深入探讨 Unreal Engine 4 (UE4) 中的距离场技术,包括其原理、实现细节以及在渲染中的应用。距离场技术在现代游戏引擎中用于提高光照和阴影的效果,尤其是在处理复杂几何形状时。文章将结合具体代码示例,帮助读者更好地理解和应用这一技术。 ... [详细]
  • 在Ubuntu 18.04上使用Nginx搭建RTMP流媒体服务器
    本文详细介绍了如何在Ubuntu 18.04上使用Nginx和nginx-rtmp-module模块搭建RTMP流媒体服务器,包括环境搭建、配置文件修改和推流拉流操作。适用于需要搭建流媒体服务器的技术人员。 ... [详细]
  • 在Java开发中,保护代码安全是一个重要的课题。由于Java字节码容易被反编译,因此使用代码混淆工具如ProGuard变得尤为重要。本文将详细介绍如何使用ProGuard进行代码混淆,以及其基本原理和常见问题。 ... [详细]
author-avatar
透明的眼泪2502913707
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有