Google OAuth 2.0 y Java. ¿Es seguro almacenar tokens de acceso localmente?

4

Instalé esta aplicación Java:

enlace

El programa solicita permiso para ver mis archivos de Google-Drive y luego almacena una token de acceso en mi disco duro local. Nombre de archivo: 'StoredCredential'. La próxima vez que la aplicación necesite acceder a los archivos, utiliza el token para autenticarse. ¿Cuáles son los riesgos de este método y hay formas de hacerlo más seguro?

Gracias por cualquier consejo.

    
pregunta joop s 16.05.2016 - 00:07
fuente

2 respuestas

3

Echando un vistazo a la pieza del código fuente específico ( GoogleDrive.java ) que maneja la creación / inicialización de archivos de credenciales, encontré esto:

Línea 449:

/** Directory to store user credentials. */
private final java.io.File DATA_STORE_DIR;

Línea 473:

public GoogleDrive(Properties configuration) {
    DATA_STORE_DIR = new java.io.File("data/google/" + configuration.getProperty("account", "default"));

    try {
        // initialize the data store factory
        dataStoreFactory = new FileDataStoreFactory(DATA_STORE_DIR);
        // initialize the transport
        httpTransport = GoogleNetHttpTransport.newTrustedTransport();

    } catch (Exception e) {
        throw new RuntimeException("No se pudo inicializar la API de Google");
    }
    init();
}

¿Puede ver que el archivo de credenciales se almacena en "data/google" usando una ruta relativa en Unix? -¿me gusta? Esto significa que no querrá ejecutar este software en su directorio /tmp , ya que las personas que desee pueden acceder a las credenciales. Si el conjunto de parámetros es account=default , la ruta será $CURRENT_DIR/data/google/default . Este es el comportamiento predeterminado de java.io.File y se encuentra una respuesta más larga en stackexchange:

Consejos para hacer esto un poco más seguro (en la perspectiva de StoredCredential):

  • No ejecute java como root / admin. ¡NUNCA! No hay necesidad de si del sistema de archivos a la red. FTP se enlaza en un puerto que es superior a 1024 , por lo que no hay necesidad de ejecutar como root
  • Mantenga data/ bajo un permiso de directorio estricto, como rwx solo para usted, el propietario.

Hay otras medidas de seguridad que podría tomar en relación con el enlace de puerto local y el usuario local que podría acceder a él (iptables), pero saldrá del alcance de la pregunta.

    
respondido por el nwildner 16.05.2016 - 21:15
fuente
1

Darle a una aplicación tu token OAuth es como darles una contraseña de uso limitado. En este caso, es una contraseña que pueden usar para ingresar a Google Drive, pero no pueden usarla para ingresar a su Gmail. Si no se siente cómodo con la aplicación guardando esa clave en el almacenamiento, entonces no use esa aplicación.

También, puede revisar los tokens de OAuth que ha otorgado y revocar los que ya no desea que estén activos. Haga clic en su imagen en la esquina superior derecha de una página de Google y luego seleccione "Mi cuenta" y haga clic en "Aplicaciones y sitios conectados" en "seguridad".

Enlace directo: enlace

    
respondido por el tylerl 08.06.2016 - 09:30
fuente

Lea otras preguntas en las etiquetas