2015-03-20 8 views
6

Sto utilizzando JavaScript (angularjs) sul sito UI/progetto e Web API 2 e altro sito/progettocome nascondere o proteggere il token nel passaggio da javascript per API Web 2

progetto UI: localhost/12345
API Web: localhost/98777

Il progetto UI sta chiamando il progetto Web API (C#) passando il token dall'interfaccia utente a WebAPI per le richieste CRUD.

ho generato il token nel progetto di ServerSide - WEB API2 (localhost/98777), 1- username/password 2- poi l'url localhost:/98777/Token, passando nome utente + password + gettone

con questo modo restituisce un token se lo si chiama in fiddler: con content-type: application/x-www-form-urlencoded. In questo modo un token viene generato e scritto nel DB locale, in seguito questo token generato può essere utilizzato nell'app dell'interfaccia utente per chiamare con javascript (ajax/angolare) passando al progetto WebAPI.

Ho implementato il token bearer chiamando i metodi GET/POST/PUT nel mio sito client.

localhost/12345 defined in Client site to get employee records via token: 
---------------------------------------------- 
method: 'GET' 
contenttype: 'application/json, charset=utf-8', 
authorization: "Bearer 040jdU6ry....." 
url: localhost/98777/api/employees/ 

questo mi restituisce i dati tutti gli impiegati ... funziona.

localhost/98777 defined in server site web.config: 
--------------------------------- 
<httpProtocol> 
<customHEaders> 
    <remove name="Access-Control-Allow-Origin" /> 
    <add name="Access-Control-Alllow-Origin" value ="*"/> 
<customHeaders> 
</httpProtocol> 

PROBLEMA? Il problema è che le persone possono fare e aprire gli strumenti per sviluppatori in IE/Chrome/FF e vedere i sorgenti di javascript e guardare il token. e quindi eseguire il codice in Fiddler/compositore e aggiungere record :(.

così perché ho bisogno di un token poi ????

Può consigli a qualcuno che parte mi manca? E 'normale che la gente può vedere il token?

Questa applicazione sarà utilizzato in intranet e utilizzato dagli sviluppatori, quindi ho bisogno di fissarlo massima ...

+0

Supponendo che l'utente/token sia autorizzato ad aggiungere record, perché dovrebbe essere importante se la richiesta proviene dalla console o dall'interfaccia utente? – levi

+0

Non si protegge il token dall'utente autorizzato. Stai usando SSL per proteggere quel token da altre persone? Questo sarebbe il rischio per la sicurezza. –

risposta

0

si può pensare seguenti operazioni,

  1. hanno una chiave
  2. Encrypt pubblica la chiave utilizzando Time stamp
  3. Invia la chiave crittografata con il timestamp nell'intestazione
  4. crittografare la chiave nella API con lo stesso indicatore ora
  5. Confronta i due tasti.
  6. Controllare il timestamp con l'ora di sistema.
+0

qualsiasi codice sorgente di esempio su di esso? – Kiquenet

4

È normale che la gente può vedere il token?

Sì, è normale. Per quanto ne so, il token contiene solo informazioni sull'identità, così come alcune affermazioni che il cliente non può modificare. Questa è l'unica cosa di cui ci possiamo fidare: Identità.

Sul lato server è necessario controllare (ruoli/diritti/regole aziendali) che l'utente corrispondente all'identità del token è autorizzato a eseguire l'azione richiesta.

Mai fare affidamento sull'applicazione delle regole aziendali dell'interfaccia utente lato client. Controlla sempre lato server e sarai al sicuro.