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.
REST API Secure
- Rejestracja: dni
- Ostatnio: dni
- Postów: 101
- Rejestracja: dni
- Ostatnio: dni
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 ;-)
- Rejestracja: dni
- Ostatnio: dni
- Postów: 274
Najprościej użyć SSLa ;) Wtedy możesz wykorzystać bez problemu HTTP Basic Auth albo OAuth Bearer Token
- Rejestracja: dni
- Ostatnio: dni
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ł
- Rejestracja: dni
- Ostatnio: dni
- Postów: 101
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ź.
- Rejestracja: dni
- Ostatnio: dni
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
- Rejestracja: dni
- Ostatnio: dni
Innego sposobu nie znalazłem i aktualnie ten implementuje - jak znajdziesz jakiś lepszy zapodaj - z chęcią się z nim zapoznam.
- Rejestracja: dni
- Ostatnio: dni
- Postów: 101
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