我深入苹果的Touch ID,更准确地说是本地认证器.
现在的文档是相当稀疏的.
它主要是这样的:
现在的文档是相当稀疏的.
它主要是这样的:
LAContext *myContext = [[LAContext alloc] init]; NSError *authError = nil; NSString *myLocalizedReasonString = <#String explaining why app needs authentication#>; if ([myContext canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&authError]) { [myContext evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics localizedReason:myLocalizedReasonString reply:^(BOOL success,NSError *error) { if (success) { // User authenticated successfully,take appropriate action } else { // User did not authenticate successfully,look at error and take appropriate action } }]; } else { // Could not evaluate policy; look at authError and present an appropriate message to user }
使用您的指纹进行认证的想法是不错的.但是如果我知道密码,我可以在设备中添加指纹.它很容易得到密码,就像你坐在列车旁的受害者旁边,看他/她输入密码.
我想使用指纹作为安全认证的一种方法,但是想要能够检测自从上次请求指纹以来是否添加了新的指纹.
苹果正在为AppStore做这件事.如果您想在AppStore中验证一笔交易,并且自上次交易以来添加了新的指纹,AppStore会请求您的AppleId-Password.这是一个理智的行为,因为手机可能已经被别人知道密码,并添加了自己的指纹来购买昂贵的东西.
我的问题:自从上次使用本地身份验证器以来,是否可以检测到是否添加了新的指纹?
解决方法
简而言之;没有.
多一点细节; LocalAuthentication框架是一个严密防护的黑匣子.你从中得到的信息非常有限.你与它的互动是这样的:
>询问它是否能够针对某种类型的策略进行身份验证(写入时只有1个可用) – Biometrics(Touch ID))
>如果可以的话,请问它实际上是这样做的
>系统接管实际认证
>它可以让你知道身份验证是否成功(如果没有,它告诉你为什么)
您没有实际身份验证过程的概念(例如使用手指).这当然是设计的.苹果不想要也不需要给你访问这些信息.