2015-03-20 26 views
6

używam JavaScript (angularjs UI) na stronie internetowej projektu i/API 2, a drugiej strony/Projectjak ukryć lub zabezpieczyć token podczas przechodzenia z javascript do Web API 2

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

Projekt UI wywołuje projekt Web API (C#) przekazujący token z interfejsu użytkownika do interfejsu WebAPI dla żądań CRUD.

Mam wygenerowany token w projekcie po stronie serwera - Web API2 (localhost/98777), 1- login/hasło 2- wtedy url localhost:/98777/Reklamowe, przechodząc login + hasło + żeton

w ten sposób zwraca token, jeśli wywołasz go w skrzypce: z typem treści: application/x-www-form-urlencoded. W ten sposób generowany jest token i zapisywany do localDB, później ten wygenerowany token może być użyty w aplikacji użytkownika do wywoływania z javascript (ajax/angle), przechodząc do projektu WebAPI.

Zaimplementowałem token nośnika wywołujący metody GET/POST/PUT w mojej witrynie klienta.

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/ 

to zwraca mi dane wszystkich pracowników ... to działa.

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> 

PROBLEM? Problem polega na tym, że ludzie mogą zrobić i otworzyć narzędzia dla programistów w IE/Chrome/FF i zobaczyć źródła javascript i spojrzeć na token. a następnie wykonanie kodu w Skrzypek/kompozytor i dodać rekordy :(.

więc dlaczego muszę token następnie ????

Może ktoś rada jaką część mi brakuje? Czy to normalne, że ludzie można zobaczyć token?

Ta aplikacja będzie używany w intranecie i używane przez programistów, więc trzeba zabezpieczyć go maksymalnie ...

+0

Zakładając, że użytkownik/token jest upoważniony do dodawania rekordów, dlaczego miałoby to znaczenie, gdyby żądanie pochodziło z konsoli lub interfejsu użytkownika? – levi

+0

Nie chronisz tokena przed autoryzowanym użytkownikiem. Czy korzystasz z protokołu SSL w celu ochrony tego tokena przed innymi osobami? To byłoby ryzyko bezpieczeństwa. –

Odpowiedz

0

można myśleć o kolejnych krokach

  1. Mają klucza publicznego
  2. zaszyfrowania klucza za pomocą Time Stamp
  3. Wyślij klucz zaszyfrowanych ze znacznikiem czasu w nagłówku
  4. zaszyfrowania klucza w API z tym samym znacznikiem czasu
  5. porównać oba klawisze.
  6. Sprawdź znacznik czasu wraz z czasem systemowym.
+0

dowolny przykładowy kod źródłowy na ten temat? – Kiquenet

4

Czy to normalne, że ludzie widzą token?

Tak, to jest normalne. O ile mi wiadomo, token po prostu przechowuje informacje o tożsamości, a także niektóre roszczenia, których klient nie może zmodyfikować. To jest jedyna rzecz, której można ufać: Tożsamość.

Po stronie serwera należy sprawdzić (role/uprawnienia/reguły biznesowe), czy użytkownik odpowiadający tokenowi jest uprawniony do wykonania żądanej akcji.

Nigdy nie należy polegać na wymuszaniu reguł biznesowych w interfejsie użytkownika po stronie klienta. Zawsze dokładnie sprawdzaj serwer po stronie, a będziesz bezpieczny.