2015-03-09 14 views
7

Sono in grado di convalidare correttamente un ID tocco utente. Tuttavia, qual è il modo più sicuro per recuperare l'accesso utente e la password per eseguire il login una volta che l'autenticazione touch ID ha avuto esito positivo.Come collegare Touch ID con le credenziali di accesso?

Per iTunes connect app, una volta che l'accesso touch ID è riuscito, sembra che recupererà la password localmente e la inserirà nella password UITextField. Immagino che stia usando il portachiavi.

Tuttavia è sicuro memorizzare le credenziali dell'utente sull'iPhone stesso? Ci sono altri metodi?

enter image description here

+0

è possibile utilizzare per uchID per fornire l'accesso autenticato al KeyChain - fare riferimento al codice di esempio Apple. Il KeyChain fornisce spazio di archiviazione sicuro per le password. – Paulw11

+0

Thx @ Paulw11 È davvero sicuro memorizzare le credenziali dell'utente nel portachiavi? Sto creando un'app con dati altamente sensibili. Recentemente il cliente desidera integrare la funzione touch ID. – user1872384

+2

E 'improbabile che si sarà in grado di costruire un contenitore più sicuro di KeyChain fornisce - Questo white paper fornisce qualche informazione su come funziona il Portachiavi - http://images.apple.com/business/docs/iOS_Security_Guide_Oct_2014.pdf – Paulw11

risposta

4

si desidera memorizzare le informazioni di accesso nel portachiavi, ma è necessario fare in modo che il parametro di accessibilità è impostato su kSecAttrAccessibleWhenUnlocked o kSecAttrAccessibleWhenUnlockedThisDeviceOnly (kSecAttrAccessibleWhenUnlockedThisDeviceOnly è un po 'più sicuro dato che la password non lascerà il dispositivo , dire quando il dispositivo viene eseguito il backup a un computer portatile.)

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); 

(Codice è da http://software-security.sans.org/blog/2011/01/05/using-keychain-to-store-passwords-ios-iphone-ipad/

Problemi correlati