Secure Rest api da utente autenticato

1

Diciamo che il mio Rest api è protetto usando OAuth 2 . Supponiamo che il mio cliente sia un mobile App . Diciamo che ho una chiamata Api :

@Post /increasePoints host:https://www.example.com/increasePoints  amout=10

Ora, usando questa chiamata API, si dovrebbe avere un Access Token valido. dalla mia app ho il controllo su quando chiamare questa funzione quindi non ci sono problemi. ma supponiamo che l'utente autenticato ottenga una sospensione di access token . come posso impedirgli di postare su questa API usando il suo access token ?

Poche opzioni a cui ho pensato:

  1. firma ogni chiamata con un'intestazione speciale.
  2. usa client_authentication con scope point - ho appena letto su questo tipo di autenticazione ma l'utente può ottenere access token con la stessa facilità per ciò che ho capito.
posta royB 16.02.2015 - 14:24
fonte

2 risposte

1

Semplicemente non concedi all'utente l'accesso a tale API. Ad esempio, disponiamo di diverse app Web che utilizzano token di accesso e fatturano all'utente determinate azioni. Il sistema di fatturazione è centralizzato e c'è un'app utilizzata dai nostri servizi clienti per aggiungere crediti alle fatture.

Ma non vi è alcun motivo per cui il token di accesso che l'utente finale deve eseguire le azioni sull'app che sta utilizzando dovrebbe fornire l'accesso al sistema di fatturazione, poiché ciò significherebbe che potrebbero aggiungere crediti ogni volta che lo desiderano. L'ID dell'utente viene confrontato con un database di azioni che possono eseguire e il tentativo di aggiungere crediti non è consentito. Sembra che tu sia in una situazione simile, ma non hai separato le azioni dell'amministratore dalle azioni dell'utente finale.

es. se effettui il checkout in un negozio online, l'azione esposta è quella di pagamento. Non ci sono "invia questi elementi a me" e "carica il mio paypal" nell'API, sebbene entrambi si verifichino sul server; l'utente non può fare l'uno senza l'altro. Le azioni si trovano nel frame di riferimento dell'utente.

Non fare affidamento sulla tua app per essere il gatekeeper e aumentare i punti. Implementa qualsiasi azione eseguita dall'utente per aumentare i punti sul server e non deve esporre l'azione sensibile nell'API. Se hai qualche motivo per esporre l'azione per l'uso da amministratore, controlla che l'utente a cui appartiene il token sia un amministratore.

    
risposta data 08.04.2015 - 16:34
fonte
0

Devi archiviare il token API nel tuo server e devi convalidarlo nel database per ogni chiamata API, Pertanto, quando è necessario revocare l'accesso, rimuovere il token API dal database, quindi non sarà valido durante la prossima chiamata

    
risposta data 09.03.2015 - 14:06
fonte

Leggi altre domande sui tag