Archiviazione multipla della password con recupero per le applicazioni con autorizzazione?

6

Sto lavorando a uno strumento di sviluppo che richiede la conoscenza di una o più password API per l'utilizzo da parte di un utente. Attualmente funziona su Mac e utilizza il portachiavi per memorizzare le credenziali per un successivo riutilizzo.

Esistono opzioni simili per l'archiviazione delle password che sono multipiattaforma e hanno le seguenti proprietà?

  • Archivia le credenziali in modo sicuro
  • Possibilità di autorizzare le applicazioni ad accedere alle credenziali ripetutamente senza eseguire nuovamente l'autenticazione?
  • Le credenziali sono accessibili tramite un'API (a condizione che l'utente abbia autorizzato l'accesso una tantum o indefinito)?
  • (Nice-to-have) Possibilità di autorizzare le applicazioni per un periodo di tempo specifico (vale a dire una settimana o un mese), dopo di che l'utente è tenuto a ri-autorizzare l'applicazione.
  • (Nice-to-have) Supporto per l'autenticazione a più fattori durante l'autorizzazione

Il portachiavi funziona alla grande in questo senso, poiché mi consente di essere responsabile della sicurezza delle credenziali e consente l'utilizzo delle credenziali da parte di altre applicazioni (a condizione di una chiave credenziale strutturata) con un'autorizzazione che può essere unica tempo o indefinito.

Ho tentato di setacciare il web (probabilmente male), ma sto avendo problemi con il fatto che ottengo solo i gestori di password, che sono orientati verso un utente che richiede le credenziali, piuttosto che un'applicazione, o ottengo istruzioni su come memorizzare correttamente usando bcrypt, che è ottimo per verificare le password, ma non se ho bisogno di recuperarlo in seguito. Ad esempio, ho un proof of concept per l'archiviazione delle credenziali in LastPass, ma è necessario inserire una password master ogni volta che vengono richieste le credenziali, a meno che non memorizzi la password principale da qualche parte accessibile, che sconfigge lo scopo del gestore password nel primo posto.

    
posta Ralph Callaway 18.04.2015 - 01:09
fonte

3 risposte

3

Quello che stai cercando è la crittografia simmetrica quando i dati originali sono richiesti di nuovo. vale a dire memorizzare i dati importanti utilizzando la crittografia simmetrica. L'applicazione fornisce quindi l'accesso a applicazioni esterne che possono fornire un utente e una password. Gli strumenti di chiamata sono autenticati con un hash memorizzato asimmetrico. Ad esempio bcrypt for the Hash.

È possibile assegnare un cookie se il chiamante utilizza http per ridurre la re-auth.

Dai un'occhiata a Scambio sicurezza Puoi pubblicare domande serie sui buoni modi per fare ciò che riguarda la sicurezza in sicurezza.

    
risposta data 21.04.2015 - 15:15
fonte
1

Penso che i fornitori di Oauth (twitter, google, fb) ti daranno quello che vuoi:

  • essi (probabilmente memorizzano le credenziali in modo sicuro
  • possibilità di autorizzare le applicazioni (non solo gli utenti)
  • disponibile dall'API
  • probabilmente ci sono più funzionalità che ti interessano

Tutto ciò che serve è registrare la tua applicazione e fare alcuni reindirizzamenti per l'autenticazione. Potrebbe non essere l'ideale per utilizzare l'autenticazione di terze parti, ma di questi tempi non è così. Alcuni utenti potrebbero anche preferire utilizzare i loro account esistenti.

Se terze parti non funzionano per te, puoi sempre implementare Oauth da solo.

    
risposta data 22.04.2015 - 02:00
fonte
1

In poche parole, stai scrivendo un programma che legge le informazioni da una funzione di archiviazione protetta protetta (in modo che possa chiamare API esterne). La stessa struttura di archiviazione protetta ha la propria autenticazione (nome utente / password e possibilmente autenticazione a più fattori).

E la chiave è che questa autenticazione alla struttura di archiviazione sicura si desidera mantenere in qualche modo, in modo che il programma non disturbi l'utente ripetutamente nel tempo, presumibilmente attraverso i riavvii del programma (forse anche i riavvii del sistema operativo). / p>

Quindi vuoi due strutture di archiviazione!

La prima funzione di archiviazione protetta protetta memorizza tutte le credenziali API esterne. La seconda struttura di archiviazione protetta protetta memorizza UNA COSA - le credenziali per la prima struttura di archiviazione.

A questo punto, si desidera assistenza per la creazione della seconda struttura di archiviazione. L'intero problema si riduce a una domanda: "Come immagazzino un set di credenziali"?

SSH risolve questo problema con ssh-agent ( qui ) "ssh-agent consente all'utente di connettersi più volte senza dover digitare ripetutamente la passphrase ". Si avvia ssh-agent vicino all'inizio dell'accesso utente e rimane attivo fino al logout o all'arresto.

Ma questo non ti aiuta attraverso gli accessi. Linux risolve questo problema con portachiavi ( qui ) "Il portachiavi ti consentirà di riutilizzare un ssh-agent tra gli accessi e, facoltativamente, di richiedere passphrase ogni volta che l'utente effettua il login "; ( here ) "riusare ssh-agent e / o gpg-agent tra gli accessi".

Hai accennato al tuo Mac OS che usa il portachiavi, che presumo sia la stessa cosa.

Per Windows, la domanda sembra avere una risposta qui ( here ) " Esiste un equivalente del portachiavi OS X, utilizzato per memorizzare le password degli utenti, in Windows? "

    
risposta data 24.04.2015 - 17:39
fonte