Apple の Touch ID、より正確には Local Authenticator を掘り下げています。現在のドキュメントはかなりまばらです。主にこれだけです:
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
}
https://developer.apple.com/documentation/localauthenticationから取得
認証に指紋を使用するというアイデアは素晴らしいです。しかし、パスコードを知っていれば、デバイスに指紋を追加できます。そして、パスコードを取得するのは非常に簡単です。たとえば、電車の中で被害者の隣に座って、被害者がパスコードを入力するのを見るようにします。
安全な認証方法として指紋を使用したいのですが、前回指紋を要求してから新しい指紋が追加されたかどうかを検出できるようにしたいと考えています。
Apple は AppStore のためにこれを行っています。AppStore でトランザクションを認証する必要があり、最後のトランザクション以降に新しい指紋を追加した場合、AppStore は AppleId-Password を要求します。パスコードを知っていて、高価なものを購入するために自分の指紋を追加した誰かが電話を盗んだ可能性があるため、これは正常な動作です。
私の質問: 前回 Local Authenticator を使用してから新しい指紋が追加されたかどうかを検出できますか?