ios objective-c api nsuserdefaults keychain

Almacenamiento de tokens de autenticación en iOS-NSUserDefaults vs Keychain?



objective-c api (2)

¿Cuál es el lugar donde debería almacenar los tokens para cuando el usuario inicie sesión en un servicio? No estoy guardando contraseñas (obviamente donde usaría el llavero) pero solo el token. Muchos lugares dicen que simplemente utilizas NSUserDefaults pero algunas personas en StackOverflow parecen realmente interesadas en el llavero.

¿Está bien NSUserDefaults?


Recomiendo encarecidamente que uses el llavero, es exactamente lo que hace Facebook para almacenar sus tokens de sesión.

NSUserDefaults no es seguro ni está encriptado; se puede abrir y leer fácilmente, tanto en el dispositivo como cuando se sincroniza con una Mac. Por lo tanto, aunque los valores predeterminados de los usuarios son un buen lugar para cosas como preferencias e información de configuración, no es un buen lugar para nada confidencial, como las contraseñas.

Los tokens de sesión casi siempre deberían tratarse igual que las contraseñas, por lo que debe almacenarlos de forma segura en el llavero, donde se cifrarán. Apple tiene un código de muestra ( GenericKeychain ) que muestra una implementación básica, y encontrará otros ejemplos al buscar . Espero que te haya ayudado.


Vale la pena mirar usando Lockbox . Realmente simplifica la interacción con el llavero.