Ho questo codice di tornare una password dal portachiavi per un dato nome utente NSString:iOS SFHFKeychainUtils fallendo * * a volte con l'errore -25.308 errSecInteractionNotAllowed
NSError *error = nil;
NSString *appName = [[[NSBundle mainBundle] infoDictionary] objectForKey:(NSString*)kCFBundleNameKey];
NSString *pw = [SFHFKeychainUtils getPasswordForUsername:username andServiceName:appName error:&error];
if(error != nil)
// log the error
maggior parte del tempo per la maggior parte degli utenti questo tutto funziona benissimo - ma per alcuni utenti specifici questa chiamata sembra fallire (e portare avanti non) dove si restituisce il seguente errore:
The operation couldn’t be completed. (SFHFKeychainUtilsErrorDomain error -25308.)
questo è apparentemente errSecInteractionNotAllowed -, che da quello che ho letto io penso questo significa che è necessario un certo tipo di interazione con l'utente per accedere al portachiavi.
Qualcuno ha idea del motivo per cui questa chiamata potrebbe non riuscire solo per alcuni utenti specifici? Questa voce del portachiavi è specifica per la mia app, quindi perché è necessaria l'interazione con l'utente per accedervi?
Tutti gli indicatori molto apprezzate ...
Ho verificato questo su iOS4, iOS5 e iOS6. Su tutte le versioni iOS viene restituito il codice di errore errSecInteractionNotAllowed se i dati che non sono contrassegnati con kSecAttrAccessibleAlways vengono letti quando il dispositivo è in stato di blocco (ad esempio attività in background, download di Edicola ecc.). –
kSecAttrAccessibleAlways non è una grande scelta: è possibile ottenere maggiori vantaggi in termini di sicurezza ed evitare comunque l'errore, utilizzando qualcosa come kSecAttrAccessibleAfterFirstUnlock (o un'impostazione ancora più restrittiva, se questo funziona per la propria app). – frankodwyer
Posso confermare che, quando l'app è in primo piano ma il dispositivo è bloccato con password, la libreria portachiavi mi dà il -25308. Grazie ! – Magurizio