当前位置: 首页 > 科技观察

iOS8如何集成TouchID功能

时间:2023-03-15 20:10:00 科技观察

2013年9月,苹果为当时发布的最新款iPhone产品配备了一系列硬件升级方案。在iPhone5s中,最具创新性的机制无疑是围绕Home键设计的超薄金属环,也就是被称为TouchID的指纹传感器。开发者随后开始以其API为突破口,希望在自己的应用中引入这一高级功能。现在一年过去了,iOS8提供的新框架让开发者可以更轻松地使用指纹传感器。这套LocalAuthentication框架可以轻松实现用户认证,你可以通过它来完成应用的登录机制或者保护应用中的敏感数据。在今天的教程中,我们将了解如何将整套选项应用到我们自己的设计中,我们可以从设备中获取哪些数据,并引导您逐步构建示例应用程序。要完成本教程,您需要安装Xcode6才能创建新项目,并且您需要具有TouchID的设备来测试您创建的示例应用程序。1.TouchIDTouchID是指安装在iPhone5sHome键上的指纹传感器。它的存在是为了帮助用户更轻松地完成识别过程,从而鼓励用户尽可能多地使用保护机制。每台设备最多可以配置五种指纹识别信息。到目前为止,TouchID已被用于解锁设备以及在iTunesStore、AppStore和iBooksStore中完成购买。在进一步探讨如何将其整合到您自己的应用程序中之前,我们首先需要了解传感器本身。TouchID传感器以每英寸500像素的分辨率扫描用户的指纹,并将指纹图案分为三种类型之一:拱形、漩涡形和圆环形。该传感器的设计考虑到了便利性。您可以从任意角度对手指进行扫描,当前扫描结果在任意方向均可与原始指纹记录正确匹配。Apple声称,对于任何给定的指纹模式,TouchID被错误识别的概率仅为五万分之一。0001到9999之间有10,000种可能的组合。不过苹果没有明确指出的是,在某些情况下,我们可能无法使用自己的指纹来成功解锁解锁操作,比如游泳后手指纹理发生变化时。如果您打算使用TouchID,最重要的一点是首先考虑用户可能无法使用手指进行身份验证的用例。由于Apple不再允许我们使用设备自带的PIN码验证机制,如果TouchID无法正常使用,只能在应用程序中创建额外的密码匹配方案。2.安全注意事项指令传感器带来的最大问题是从根本上侵犯了用户的隐私。如果您的密码内容泄露,您可以通过修改及时保存,恶意人员将无法继续利用它访问用户的敏感数据。但是,如果你的指纹信息或者苹果的指纹内容算法泄露了,我们显然没有办法快速更改。本地身份验证框架处理用户身份验证的所有繁重工作。当它与TouchID结合使用时,重要的是要确保该框架不会泄露有关用户的任何详细信息,并且不会从设备传输任何数据。但是,开发人员可以使用此框架来检查是否允许特定用户使用相应的应用程序。如果你已经熟悉OAuth规范,你会发现这两种认证处理方式其实非常相似。我们需要第三方来审核用户的身份,如果我们对第三方有足够的信任,我们可以根据他们的反馈直接为用户提供认证凭证。3.LAContextLocalAuthentication框架的核心是LAContext类。开发人员可以使用LAContext实例来评估安全策略。在撰写本文时,这是唯一可用的管理策略。它使用TouchID传感器来检查用户是否是设备的所有者。未来可能会推出其他安全管理策略。例如,Apple可能会引入一类非特权角色,只允许他们访问某些资源。如果框架未能完成验证,将提供一条错误消息。设备无法完成验证的原因可能包括以下几种:LAErrorTouchIDNotAvailable设备本身没有指纹传感器设备。LAErrorPasscodeNotSet设备上没有密码设置信息,表示TouchID功能被禁用。LAErrorTouchIDNotEnrolled已设置密码机制,但设备配置中未保存指纹内容。如果遇到包含上述错误代码的错误信息,则需要使用其他一些方法来完成用户的认证。在这种情况下,你就不能再仅仅依靠TouchID来完成保护工作了。让我们一起创建一个示例应用程序来了解如何使用本地身份验证框架。4.项目设置第一步是打开Xcode,在File菜单中选择New>Project...。接下来在iOS应用程序模板列表中选择SingleViewApplication,然后单击Next。第二步是为我们的项目输入一个名称。我将我的应用程序命名为Auth。接下来输入组织名称、公司ID和类前缀。在Devices列表中选择iPhone,然后单击Next,然后为项目选择一个文件保存位置。第三步是点击ViewController.h,定义一个新的操作authenticateButtonTapped,它会触发整个认证过程。ViewController类的界面外观应该是这样的:#import@interfaceViewController:UIViewController-(IBAction)authenticateButtonTapped:(id)sender;@end第四步,打开Main.storyboard,拖一个控制器视图中的按钮。更改按钮的标签以读取Authneticate。步骤5右键单击??该按钮以显示连接检查器。单击TouchUpInside事件左侧的加号,然后选择视图控制器来承载该按钮。这时候屏幕上会出现一个新的菜单,在这里你需要选择我们之前设置好的操作。5.验证用户身份第一步是打开ViewController.m激活authenticateButtonTapped方法。在文件开头为本地身份验证框架添加以下导入语句。#import第二步,在authenticateButtonTapped方法中,我们创建一组后台信息,检查后台是否可以评估LAPolicyDeviceOwnerAuthenticationWithBiometrics策略,如果不同则显示错误信息。-(IBAction)authenticateButtonTapped:(id)sender{LAContext*context=[[LAContextalloc]init];NSError*error=nil;if([contextcanEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometricserror:&error]){//AuthenticateUser}else{UIAlertView*alert=[[UIAlertViewalloc]initWithTitle:@"Error"message:@"YourdevicecannotauthenticateusingTouchID."delegate:nilcancelButtonTitle:@"Ok"otherButtonTitles:nil];[alertshow];}}Step3如果LAContext对象可以使用TouchID进行认证,那么我们可以审计用户身份。如果没有报错信息,我们就可以判断当前用户是否属于设备持有者。***通过以下代码实现authenticateButtonTapped方法。-(void)authenicateButtonTapped:(id)sender{LAContext*context=[[LAContextalloc]init];NSError*error=nil;if([contextcanEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometricserror:&error]){[contextevaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometricslocalizedReason:owner@?”Arepyoute:^(BOOLsuccess,NSError*error){if(error){UIAlertView*alert=[[UIAlertViewalloc]initWithTitle:@"Error"消息:@"Therewasaproblemverifyingyouridentity."delegate:nilcancelButtonTitle:@"Ok"otherButtonTitles:nil];[alertshow];return;}if(success){UIAlertView*alert=[[UIAlertViewalloc]initWithTitle:@"Success"消息:@"Youarethedeviceowner!"delegate:nilcancelButtonTitle:@"Ok"otherButtonTitles:nil];[alertshow];}else{UIAlertView*alert=[[UIAlertViewalloc]initWithTitle:@"错误"消息:@"Youarenotthedeviceowner."delegate:nilcancelButtonTitle:@"Ok"otherButtonTitles:nil];[alertshow];}}];}else{UIAlertView*alert=[[UIAlertViewalloc]initWithTitle:@"错误"消息:@"YourdevicecannotauthenticateusingTouchID."delegate:nilcancelButtonTitle:@"Ok"otherButtonTitles:nil];[alertshow];}}6.构建并运行接下来,我们需要在带有指纹传感器的物理设备上构建并运行此应用程序,并通过点击主页按钮进行身份验证,只要您的设备实际支持TouchID,即应用程序应该正确通过。当您将手指放在传感器上时,应用程序可以正确识别用户是否是设备的合法所有者。小结在今天的教程中,我们了解到iOS8最近新增了LocalAuthentication框架。通过检查用户的身份,LAContext类允许用户完成识别工作,而无需直接向应用程序本身提供任何敏感数据。英文原文链接:iOS8:IntegratingTouchIDNuka-Cola翻译