Non è oAuth più debole delle password tradizionali

1

Comprendo la necessità di oauth per l'accesso programmatico alle apis, ecc. considerando che le password sono utilizzate per una maggiore autenticazione a livello umano. Tuttavia, quando memorizziamo le password, noi (si spera) salano + li cancelliamo. Quando immagazziniamo i token, questi sono in un formato che può essere invertito in testo in chiaro poiché spesso questi token vengono visualizzati dagli sviluppatori.

Ciò che trovo curioso è che non mi sia mai venuto in mente di memorizzare i token, ma non si tratta di un trattamento intrinsecamente meno sicuro di quello per le password? Perché stiamo bene con questo? Non potremmo hash il token nel db dopo l'unica volta che lo mostriamo allo sviluppatore e poi se hanno bisogno di cambiarlo chiediamo loro di resettare (proprio come facciamo per le password)?

    
posta winhowes 30.01.2016 - 22:15
fonte

2 risposte

1

Gettoni e password sono davvero cose molto diverse. Ma non hai specificato nella tua domanda cosa stai veramente chiedendo. Hai menzionato OAuth nella riga dell'oggetto della tua domanda, ma poi non menzionarlo di nuovo nel corpo della domanda. OAuth ha diversi tipi di token nelle sue specifiche, a seconda delle sottospecifiche di cui parli e del tipo di token di cui stai parlando.

Devo presumere che tu stia parlando di token Bearer, cioè dei token che vengono distribuiti dopo il completamento del flusso OAuth. In alcuni casi potrebbe non essere nemmeno necessario memorizzare i token Bearer nel server, quindi la domanda se archiviarli o meno come hash non si applica. Se stai parlando di token di aggiornamento, allora potrebbe essere una situazione in cui potresti volerli memorizzare, ma posso anche vedere gli stessi metodi applicati ai token di aggiornamento come token di accesso al portatore, quindi probabilmente non hanno bisogno di essere memorizzati sul server, devono solo essere firmati per rilevare manomissioni. Per far sì che OAuth funzioni in questo modo, devi dare un'occhiata alle specifiche del token Bearer OAUTH-JWT: link

Che tutto ciò sia stato detto, non importa che tipo di token stai usando o che tipo di flusso OAuth stai usando, dovresti affidarti a TLS per proteggere la comunicazione tra le risorse.

OAuth è una specifica molto complessa e non esiste una risposta valida per tutte le domande sulla maggior parte delle domande su OAuth.

    
risposta data 30.01.2016 - 22:50
fonte
2

Sembra che tu stia confondendo l'autenticazione con l'autorizzazione. OAuth riguarda principalmente l'autorizzazione e ha vari flussi per supportare diversi scenari e casi d'uso, uno in particolare che si sovrappone alla tua domanda supporta l'autenticazione basata su password utente / proprietario di risorse per autorizzare l'accesso alla richiesta di alcune risorse.

Come altri hanno sottolineato nella loro risposta, ci sono molti diversi flussi all'interno di OAuth e diversi tipi di token e varie specifiche di token da utilizzare con OAuth. In molti sistemi un token sarà un valore casuale o un payload con firma crittografica in modo che il server possa evitare di archiviare qualsiasi cosa. I token sono molto diversi dalle password degli utenti e vengono utilizzati per diversi casi d'uso, ad esempio il trasporto dell'autorizzazione.

    
risposta data 31.01.2016 - 03:36
fonte

Leggi altre domande sui tag