OAuth 2 Tipo di sovvenzione implicita per la prima parte SPA - Modo più sicuro e ragionevole

1

Il mio obiettivo è quello di proteggere la mia API stateless e consentire solo ai clienti proprietari (SPA) registrati di consumare le mie risorse. Non ci saranno clienti di terze parti nel mio scenario.

So che l'autorizzazione Oauth 2 con tipo di concessione implicita è raccomandata per i clienti pubblici (nella mia situazione, una SPA). Ho letto molte cose a riguardo ma non sono riuscito a capire alcuni punti, quindi ti sto chiedendo il tuo aiuto:

  1. Pensi che Oauth 2 con tipo di concessione implicita sia il modo migliore per farlo? So che le credenziali della password concedono il tipo non è sicuro per le SPA, perché non possono mantenere la riservatezza di un segreto del cliente. Quindi dovrei andare con Oauth 2 con tipo di concessione implicita?

  2. In Oauth 2, posso usare il tipo di concessione implicita con l'approvazione automatica, quindi non è più necessario il consenso degli utenti. Ma come penso alla mia SPA come app di prima parte, non voglio che nessun utente reindirizzi da nessuna parte per accedere e tornare alla pagina SPA.

Pensi sia sicuro e ragionevole abilitare l'autenticazione di base http per la mia API, quindi la mia app di prima parte sarebbe in grado di ottenere le credenziali dell'utente e aggiungerla all'intestazione dell'autorizzazione e inviata al mio server di autorizzazione sul canale SSL / TLS per autenticare e ottenere il token di accesso?

Se non è appropriato, cosa consiglieresti per raggiungere questo obiettivo?

  1. Voglio anche che gli utenti non autenticati consumino alcune risorse nella mia SPA; dovrei rendere pubbliche tali risorse per qualsiasi cliente e qualsiasi utente (in realtà non preferisco) o aspettare che SPA esegua l'autenticazione e autorizzi con un utente anonimo fittizio di ottenere un token di accesso con privilegi anonimi per utilizzare risorse API pubbliche.

  2. Per un sito web simile a Wikipedia, quanto tempo impiega un token di accesso a scadere?

  3. Quando è scaduto, quale metodo dovrei seguire? Non esiste un token di aggiornamento nel tipo di concessione implicita di OAuth 2. Dovrei chiedere agli utenti di inserire nuovamente le loro credenziali (questo non è user-friendly) o memorizzare le loro credenziali in una memoria e inviarlo a un server di autorizzazione in silenzio per ottenere un nuovo token di accesso?

posta Selçuk Işık 14.10.2018 - 15:05
fonte

1 risposta

1

Nel tuo caso, penso che OAuth 2 non abbia senso. È progettato per gestire i client di terze parti e la complessità aggiuntiva rischia di essere una distrazione quando si ha un solo client proprietario.

Per sicurezza utente :

  • Indipendentemente da ciò che fai, un'app basata sul Web è quella in cui l'utente deve fidarsi di alcune tue pagine web con il loro nome utente / password. Per questo motivo, sembra ragionevole solo l'autenticazione con nome utente + password e saltare OAuth 2, a meno che non si abbia qualche altra ragione per utilizzare OAuth 2.
  • Per le risorse pubblicamente visibili, consentire l'accesso senza autenticazione dovrebbe andare bene.

Per proteggere la tua API da utilizzare solo dalla SPA :

  • Si tratta di un problema completamente diverso dall'accesso dell'utente e mi raccomando di non essere sviato da come acquistare i token di accesso. Ad esempio, molte SPA possono essere banalmente modificate / decompilate / falsificate.
risposta data 14.10.2018 - 16:34
fonte

Leggi altre domande sui tag