OAuth2 contro autenticazione JSON

1

1) In che misura OAuth2 è più sicuro dell'autenticazione JSON (sia su SSL)?

Il contesto è un client (un server) che esegue una query su un altro server (tramite API) all'interno di una rete locale utilizzando RESTFul. Prima che il server invii un JWT, il client invia una password per l'autenticazione (su SSL).

2) Esiste quindi una giustificazione, per quanto riguarda la sicurezza, da utilizzare invece con OAuth2?

    
posta user54875 03.09.2014 - 12:57
fonte

4 risposte

1

Potrebbe non esserci una giustificazione "sicurezza", ma ci sono altre considerazioni di progettazione che vale la pena esplorare. A mio parere, il vantaggio più grande dell'utilizzo di OAuth è che si astragga il metodo di autenticazione dai vari sistemi richiesti di autenticazione / autorizzazione (questo è qualcosa che Tylerl stava descrivendo).

Ad esempio: si inizia con un servizio che si autentica contro l'utilizzo di nome utente / password JSON. Funziona tutto bene, ma decidi di introdurre un altro servizio che offre funzionalità leggermente diverse. Il nuovo servizio accetta anche nome utente e password tramite JSON.

Ad un certo punto qualcuno ti fa notare che MD5 è rotto o che non stai salendo correttamente le tue password. Nessun problema: puoi sistemarlo. Ma devi aggiustarlo in entrambi (tutti) i tuoi servizi che stanno eseguendo l'autenticazione ... Quanti di questi hai? Sai davvero dove sono tutti? Come puoi distribuire la modifica a tutti i servizi allo stesso tempo?

Eseguendo l'autenticazione con un Server di autorizzazione , come in OAuth 2.0, rimuovi parzialmente questa dipendenza. Puoi facilmente modificare i meccanismi di autenticazione all'interno di questo server e fintanto che i tuoi servizi continueranno ad accettare token OAuth, non avrai problemi.

L'altro punto importante è che OAuth è uno schema standard . Quando si parla di autenticazione, adottare schemi standard è sempre meglio che implementare i propri schemi di autenticazione. Inoltre, se volessi esporre i tuoi servizi via Internet ad un certo punto, il fatto che accetti i token di accesso OAuth renderebbe l'intero processo molto più facile.

    
risposta data 17.05.2015 - 13:53
fonte
0

Per quanto riguarda la sicurezza, i due approcci sembrano sicuri. Entrambi autenticano sia il proprietario della risorsa che il client (usando i nomi così come sono definiti da OAuth2, come se ne avessi mescolato un po ').

Tuttavia, la grande differenza è che il protocollo OAuth2 standardizza come farlo. Questo ha alcuni vantaggi:

  • È sempre meglio usare un protocollo conosciuto piuttosto che usare la sicurezza homebrewed.
  • Esistono già librerie che implementano il protocollo, il che riduce il rischio di introdurre un difetto di sicurezza.
  • OAuth2 fornisce inoltre funzionalità aggiuntive, come ad esempio la concessione del codice di autorizzazione (autorizzazione a tre gambe)

Riassumendo: sebbene entrambi i concetti sembrino fornire la stessa quantità di sicurezza, è probabilmente meglio usare un protocollo progettato da esperti piuttosto che usare il proprio, che potrebbe avere difetti di sicurezza, sia in fase di progettazione che di implementazione.

    
risposta data 16.04.2015 - 15:50
fonte
0

Il vantaggio di OAuth sull'accesso basato su password è che OAuth mi consente di concederti un permesso limitato per utilizzare la mia identità senza dirti la mia password.

Quindi, il tuo sito pubblica messaggi su Twitter utilizzando il mio account. Voglio darti il permesso di usare il mio account per pubblicare un tweet, ma non voglio darti accesso illimitato al mio account Twitter - Non voglio che tu cambi le mie impostazioni o segui nuove persone sul mio account, Voglio solo che tu pubblichi un tweet.

Se ti do la mia password, non c'è nulla che tu non possa fare. Ma se uso OAuth, posso autenticarmi su Twitter e informare Twitter che hai il mio permesso di utilizzare l'API per pubblicare un nuovo messaggio, ma nient'altro.

Un altro vantaggio di OAuth è che può implicare un processo di autenticazione complicato e non standard come desiderato (ad esempio SSO tramite SAML, o token multi-fattore o basati su hardware o altro) e il cliente non deve sapere nulla a riguardo. Devono solo inviare il browser al provider OAuth e (eventualmente) acquisire il codice di autenticazione quando viene restituito. Come avviene realmente l'autenticazione non è importante.

    
risposta data 17.05.2015 - 01:07
fonte
0

JSON e OAuth sono usati insieme ma sono due cose diverse. Mentre JSON è un formato per la strutturazione dei dati, OAuth è una specifica che consente agli utenti di condividere le risorse private su un sito Web con un altro sito senza condividere le credenziali. OAuth non è stato progettato come protocollo di autenticazione ma piuttosto come "protocollo di autorizzazione delegato". Può essere utilizzato come protocollo di autenticazione, ma è necessario essere a conoscenza del caso d'uso.

Quindi dovrebbe essere la domanda originale, quale versione e quale concessione / flusso dovrò utilizzare per rendere la mia API chiamata "sicura". In base alla tua descrizione, hai un cliente fidato che ha bisogno di accedere a risorse protette. Il client deve prima ottenere il token dal server di autorizzazione. Questo può essere fatto usando l'autenticazione di base e quindi la concessione delle credenziali del cliente ( link ) può essere una soluzione praticabile. Se la richiesta è valida e autorizzata, il server di autorizzazione emette un token di accesso in formato json.

    
risposta data 23.05.2016 - 17:21
fonte

Leggi altre domande sui tag