如何 link Touch ID 与登录凭据?
How to link Touch ID with login credentials?
我能够成功验证用户 Touch ID。但是,一旦touch ID身份验证成功,检索用户登录名和密码以执行登录的最安全方法是什么。
对于iTunes connect app,touch ID登录成功后,好像会在本地取回密码,填入密码UITextField。我猜它正在使用钥匙串。
但是,将用户凭据存储在 iPhone 本身上是否安全?还有其他方法吗?
您想将登录信息存储在钥匙串中,但您需要确保可访问性参数设置为 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/
我能够成功验证用户 Touch ID。但是,一旦touch ID身份验证成功,检索用户登录名和密码以执行登录的最安全方法是什么。
对于iTunes connect app,touch ID登录成功后,好像会在本地取回密码,填入密码UITextField。我猜它正在使用钥匙串。
但是,将用户凭据存储在 iPhone 本身上是否安全?还有其他方法吗?
您想将登录信息存储在钥匙串中,但您需要确保可访问性参数设置为 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/