sqlite - por - oauth2
Almacenar de forma segura el token de acceso en Córdoba (3)
Editar: ver mi respuesta para la solución
Actualmente, estoy trabajando en una aplicación híbrida con Ionic, donde existe el requisito de almacenar un token de autenticación para mantener al usuario conectado, y también garantizar que no se pueda acceder a estos datos fuera del contexto de la aplicación.
Por supuesto, hay muchas soluciones para esta tarea, cada una con diferentes pros y contras, por lo que es confuso (para mí) localizar la tecnología que mejor se adapte.
He estado buscando angular-localForage y otros candidatos:
Almacenamiento local
- Opción obvia para pequeños datos.
- Los datos se borran en
iOS
cuando el sistema tiene poca memoria.
IndexedDB
- Soporte Buggy en
iOS
( soporte IndexedDB )
WebSQL (SQLite)
- Al parecer, es una buena opción para datos pequeños y soporte decente (soporte de WebSQL ), pero está en desuso.
SQLite
- Hay problemas relacionados con
Cordova
eniOS
.
LokiJS
- Parece una exageración para este escenario, pero definitivamente es un candidato fuerte. ¿Hay algún problema de seguridad que deba tener en cuenta (cuando lo leo localmente persista datos en archivos
JSON
)?
PouchDB + SQLite
- Bueno, es un cliente JS para trabajar con las bases de datos CouchDB o Couchbase, que también pueden funcionar con SQLite, pero nuevamente solo necesito almacenar un Token.
Aparentemente, la mejor opción para la compatibilidad cruzada de Android / iOS debería ser irónicamente WebSQL, pero ya no se está desarrollando y tengo que garantizar el soporte a largo plazo.
Entonces mi pregunta es: ¿hay alguna otra opción que me falte para almacenar de manera segura un token de acceso? Si no, ¿cuál de las anteriores debería ser la mejor opción para esta tarea?
Después de investigar un poco, compartiré mi conclusión.
Bastante gracioso, ninguno de los candidatos anteriores es adecuado para almacenar de forma segura un token de acceso. El enfoque debería ser el uso de una solución nativa para Android ( Preferencias compartidas ) e iOS ( Llavero ).
En el caso particular de Ionic, un complemento de broadcaster para Cordova podría usarse para comunicar JS con Native para que pueda acceder a los datos almacenados.
SQLite es la mejor opción, ya que el contenido de DB se codificará y guardará. También las aplicaciones nativas dependen de SQLite para guardar datos. Para facilitar CRUD con SQLite, he creado una biblioteca contenedora. Por favor revisalo aqui
Vaya a LocalStorage, es la mejor manera de almacenar