2013-05-28 12 views
48

Qual è il luogo in cui dovrei memorizzare i token per quando l'utente accede a un servizio? Non sto salvando le password (ovviamente dove utilizzerei il portachiavi) ma solo il token. Un sacco di posti dicono basta usare NSUserDefaults ma alcune persone su StackOverflow sembrano davvero entusiaste del portachiavi.Memorizzazione di token di autenticazione su iOS - NSUserDefaults vs Keychain?

NSUserDefaults è valido?

+3

I dati memorizzati utilizzando 'NSUserDefaults' sono facilmente leggibili anche su un dispositivo non jailbroken. Se la sicurezza ti preoccupa, memorizzo i dati nel Portachiavi. Quanto tempo hai intenzione di mantenere il tuo token di autenticazione? –

+0

Puoi avere un'idea di base sull'implementazione di swift3 da [qui] (https://gist.github.com/anishparajuli555/dedfdd4aea836de49ac52d13a45a8f84) –

risposta

72

Mi raccomando di utilizzare il portachiavi - è esattamente ciò che Facebook fare per memorizzare i loro token di sessione.

NSUserDefaults non è sicuro o cifrato - può essere facilmente aperto e letto, sia sul dispositivo e quando sincronizzati a un Mac. Quindi, mentre le impostazioni predefinite dell'utente sono un buon posto per cose come le preferenze e le informazioni di configurazione, non è un buon posto per qualcosa di sensibile, come le password.

token di sessione dovrebbe quasi sempre trattati come le password, così si dovrebbe memorizzarli in modo sicuro nel portachiavi, dove saranno crittografati. Apple ha un codice di esempio (GenericKeychain) che mostra un'implementazione di base, e troverai altri esempi cercando StackOverflow. Spero che ti abbia aiutato.

+2

Questa è un'ottima risposta. Anche nella documentazione NSUserDefault. Dice che la classe è per le preferenze, non per la memorizzazione di informazioni di accesso sicure. – Tony

+0

Ecco un altro SO filo con una grande biblioteca per la semplificazione Accesso Portachiavi: http://stackoverflow.com/a/13641196/380837 – Jaroslav

20

vale la pena cercando di utilizzare Lockbox. Semplifica davvero l'interfaccia con il portachiavi.

+6

[UICKeyChainStore] (https://github.com/kishikawakatsumi/UICKeyChainStore) anche la pena di un grido. – lukestringer90

+1

D'accordo con @Mike, Lockbox ha notevolmente semplificato il problema per me. –

Problemi correlati