ios - 如何将 Touch ID 与登录凭据相关联?

标签 ios iphone xcode keychain touch-id

我能够成功验证用户 Touch ID。但是,一旦 Touch ID 身份验证成功,检索用户登录名和密码以执行登录的最安全方法是什么。

对于 iTunes connect 应用程序,一旦 touch ID 登录成功,它似乎会在本地检索密码并将其填入密码 UITextField。我猜它正在使用钥匙串(keychain)。

但是,将用户凭据存储在 iPhone 本身上是否安全?还有其他方法吗?

enter image description here

最佳答案

您想将登录信息存储在钥匙串(keychain)中,但您需要确保将可访问性参数设置为 kSecAttrAccessibleWhenUnlocked 或 kSecAttrAccessibleWhenUnlockedThisDeviceOnly(kSecAttrAccessibleWhenUnlockedThisDeviceOnly 更安全一些,因为密码不会离开设备,比如当设备处于备份到您的笔记本电脑。)

NSMutableDictionary *query = [NSMutableDictionary dictionary];
[query setObject:(id)kSecClassGenericPassword forKey:(id)kSecClass];
[query setObject:account forKey:(id)kSecAttrAccount];
[query setObject:(id)kSecAttrAccessibleWhenUnlocked forKey:(id)kSecAttrAccessible];
[query setObject:[inputString dataUsingEncoding:NSUTF8StringEncoding] forKey:(id)kSecValueData];

OSStatus error = SecItemAdd((CFDictionaryRef)query, NULL);

(代码来自http://software-security.sans.org/blog/2011/01/05/using-keychain-to-store-passwords-ios-iphone-ipad/

关于ios - 如何将 Touch ID 与登录凭据相关联?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28937726/

相关文章:

objective-c - iOS 5 和 iOS 6 上的奇怪崩溃问题

ios - 无效参数不满足 : nibNameMap ! = nil

iOS:如何在确认对话框后动画隐藏在表格单元格 "delete"菜单中?

iphone - 从4.4升级到Xcode 4.5后的差异

c++ - 在 iPhone 应用程序中从 C++ 调用 Objective-C 函数

objective-c - 子类 View 使用父类(super class) nib 文件

iphone - iPad 可以知道您的 iPhone 何时在附近吗?

ios - 为什么paymentQueue(_ :shouldAddStorePayment:_:) not being called?

ios - 组合不同语言 RTL 和 LTR 中的两个字符串

iphone - 我怎样才能拥有包含两个以上 'if' 语句的 IBAction?