Google OAuth 2.0 e Java. È sicuro memorizzare localmente token di accesso?

4

Ho installato questa app Java:

link

Il programma chiede il permesso di vedere i miei file di Google Drive e quindi di memorizzare un file token di accesso sul mio disco fisso locale. Nome file: "StoredCredential". La prossima volta che l'app deve accedere ai file utilizza il token per l'autenticazione. Quali sono i rischi di questo metodo e quali sono i modi per renderlo più sicuro?

Grazie per qualsiasi consiglio.

    
posta joop s 16.05.2016 - 00:07
fonte

2 risposte

3

Dai uno sguardo al pezzo specifico del codice sorgente ( GoogleDrive.java ) che gestisce la creazione / inizializzazione di file credenziali, ho trovato questo:

Riga 449:

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

Riga 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();
}

Puoi vedere che il file delle credenziali è memorizzato in "data/google" usando un percorso relativo su Unix -piace? Ciò significa che non vorrai eseguire questo software nella tua directory /tmp , poiché le credenziali potrebbero essere accessibili da più persone che desideri. Se il set di parametri è account=default il percorso deve essere $CURRENT_DIR/data/google/default . Questo è il comportamento predefinito di java.io.File e una risposta più lunga si trova su stackexchange:

Suggerimenti per rendere questa cosa un po 'più sicura (nella prospettiva StoredCredential):

  • Non eseguire java come root / admin. MAI! Non è necessario se dal filesystem alla rete. FTP si collega su una porta superiore a 1024 , quindi non è necessario eseguire come root
  • Mantieni data/ sotto il severo permesso di directory, come rwx solo per te, il proprietario.

Esistono altre misure di sicurezza che è possibile prendere in relazione al binding della porta locale e all'utente locale che potrebbe accedervi (iptables), ma uscirà dall'ambito della domanda.

    
risposta data 16.05.2016 - 21:15
fonte
1

Assegnare a un'app il token OAuth è come dare loro una password ad utilizzo limitato. In questo caso è una password che possono utilizzare per accedere a Google Drive, ma non possono utilizzarla per accedere a Gmail. Se non ti senti a tuo agio con l'app che salva la chiave di archiviazione, non utilizzare quell'app.

Inoltre, puoi verificare quali token OAuth hai concesso e revocare quelli che non desideri più essere attivi. Fai clic sulla tua immagine nell'angolo in alto a destra di una pagina Google, quindi seleziona "Il mio account" e fai clic su "App e siti collegati" in "sicurezza".

Link diretto: link

    
risposta data 08.06.2016 - 09:30
fonte

Leggi altre domande sui tag