REST API Secure

0

Witam
Tworzę aplikację web opierającą się o architekturę REST. Napisałem serwisy w Springu oraz warstwę klienta w Angular JS oraz Bootstrap 3. I moje pytanie brzmi jak zabezpieczyć moje API?. Czytałem o OAuth ale nie chce korzystać z autoryzacji zewnętrznej opierającej się o inne serwisy. Chciałem stworzyć wewnętrzną autoryzację. Domyślam się że musi to się opierać o jakąś formę tokenu który będzie przechowywany na obydwu warstwach i porównywany przy każdym callu do serwera. Ale takie rozwiązanie (w wersji plaintext) jest mega podatne na podsłuchanie. Czy znacie może jakieś biblioteki pozwalające bezpiecznie wprowadzić powyższe rozwiązanie? Z góry dzięki za odp.

0

Jakbyś myślał w mojej głowie.

Wczoraj spotkałem się z tym problemem i rozwiązałem go implementując własny provider OAuth2. Myślę że to rozwiązanie Ci pomoże ;-)

0

Najprościej użyć SSLa ;) Wtedy możesz wykorzystać bez problemu HTTP Basic Auth albo OAuth Bearer Token

0

Generalnie chodzilo mu o to że np

strona działa na adresie example.com a restowe api na example.com/api/ i teraz user np pobiera posty example.com/posts (czyli wykonuje restowego requesta do zasobu jsona ) do example.com/api/posts

i teraz user wpisujac w przegladarce example.com/api/ otrzyma jsona z postami - chodzi o to aby tylko strona (javascript) miała dostęp do api restowego.

Piszę to wnioskując po problemie jaki przedstawił

0

Hmm nie pomyślałem aby implementować własnego providera. Znalazłem jeszcze coś takiego jak HMAC. Autoryzacja jest podobna do kryptografii asymetrycznej. Czyli jest tworzony klucz prywatny który posiada klient oraz serwer, i nie jest on w żaden sposób przesyłany, przysyłany jest klucz publiczny z każdym postem i sprawdzany za pomocą klucza prywatnego. Jeżeli ktoś korzystał z powyższego rozwiązania nie pogardzę radami albo ciekawymi tutkami, ponieważ dopiero to ogarniam. KubusiowyKubuś dzięki za podpowiedź.

1

KubusiowyKubuś mówi ze nie ma problemu.

Ale otóż architektura klucza publicznego dla wielu userów sie nie sprawdzi ponieważ sytłacja ma sie tak (klucz prywatny i publiczny) musi być przechowywany w javascripcie na stronie usera oraz na serwerze i dalej te klucze są widoczne po stronie klienta.

Moim zdaniem lepiej rozwiązać to tak że klucz publiczny + id usera + token dla każdego requesta generowany ale dochodzimy do momentu gdy nasz pomysł staje się OAuth2 ;]

Pozdrawiam

0

W sumie;) dzieki za odp.

0

Innego sposobu nie znalazłem i aktualnie ten implementuje - jak znajdziesz jakiś lepszy zapodaj - z chęcią się z nim zapoznam.

0

Mam ostatnie pytanie. Przy pomocy jakiej biblioteki zaimplementowałeś swojego providera?? Czytałem trochu o spring-security-oauth ale po ich przykładach nie wiem czy łatwo można takowego providera zaimplementować RESTowo. A chciałbym aby to działało webservice'owo

1 użytkowników online, w tym zalogowanych: 0, gości: 1