ユーザーログイン用のアプリにタッチ ID を統合する作業を行っています。将来タッチで使用するユーザー名とパスワードを保存するので、localAuthenticate が機能しないことがわかり、新しい ACL を使用してキーチェーンにアクセスする必要があります。
ACL を使用してキーチェーンを読み書きするためのすべてのコードを取得しました。しかし、SecAccessControlCreateWithFlags(...) の SecAccessControlCreateFlags のオプション「kSecAccessControlUserPresence」が 1 つしか表示されません。これにより、ユーザーがタッチ ID を使用したくない場合に、Apple ドキュメントごとに PIN コードにフォールバックできます。とにかく、タッチ ID を使用してこれらのキーへのアクセスのみを許可する方法はありますか?それが失敗した場合、ユーザーは資格情報を手動で入力する必要がありますか?
他の選択肢がありますが、それらを避けようとしています:
オプション A: LocalAuthenticate を使用し、userdefults で資格情報の暗号化を行いますが、キーを保存する場所を把握する必要がありますか? 何か案は?
オプション B: ACL とキー チェーンを使用し続けますが、ユーザーが PIN コードまたはタッチ ID を使用したかどうかを確認する必要があります。彼らがタッチIDを使用した場合は、キーチェーンから取得した情報を使用してログインし、ピンを使用した場合はLocalAuthenticateで再度尋ねます. キャンセルされた場合はログインしません。タッチ ID で確認された場合は、キーチェーンの資格情報を使用してログインします。
更新: PIN が必要ない理由を尋ねられた場合に備えて、私たちの弁護士は、パスワードを保存するキー チェーンにアクセスする方法として、4 桁の PIN コードの概念を受け入れませんでした。