Witam!
Chcę dla istniejącej aplikacji wystawić proste API (mała ilość dostępnych zasobów). Zależy mi na tym, żeby to było bezpieczne.
Jaki protokół wybrać?
Polecicie jakieś tutoriale na start?
Witam!
Chcę dla istniejącej aplikacji wystawić proste API (mała ilość dostępnych zasobów). Zależy mi na tym, żeby to było bezpieczne.
Jaki protokół wybrać?
Polecicie jakieś tutoriale na start?
Jeśli chodzi o protokół to nie masz za dużego wyboru http i https
Jeśli pisałeś RESTfulowo to API samo niejako ci się ułożyło. A jak nie to ActionWebService i SOAP
Pisałem RESTfulowo jak najbardziej.
Z tego co czytam to polecają SOAP jeśli chodzi o bezpieczeństwo …?
Jakie znowu bezpieczeństwo daje Ci SOAP, którego nie da Ci RESTful z autentykacją (np. http) i tym samym uwierzytelnianiem po sesji/ciachu?
Jak nie chcesz tego robić, zawsze możesz wymusić przekazanie parametru typu API_KEY w żądaniu
Zasugerowałem się tym artykułem:
http://ajaxonomy.com/2008/xml/web-services-part-1-soap-vs-rest?S_TACT=105AGX44&S_CMP=ART
Jesli proste i bezpieczne to koniecznie REST, Sztywny np. napisal bardzo przejrzyste i bezpieczne API do Blip’a - polecam lekture jako odniesienie przy pisaniu nowego API.
Od SOAP’a trzymaj sie z daleka jesli CI zalezy na prostocie, mozna latwo w nim utonac nic w zamian nie zyskujac.
API Blip-a znam. Mój pierwszy pomysł był, żeby to zrobić dokładnie w ten sposób.
Tak, RESTowe Api, bawienie się w SOAPy itd. to w większości przypadków totalna strata czasu. Autentyfikację możesz zrobić przy pomocy HTTP Basic / Digest (bezpieczniej) lub OAuth (ostatnio na topie) - ostatnio używałem tego ostatniego rozwiązania i sprawuje się wyśmienicie :).
SOAP ma inne zalety (no powiedzmy) ale na pewno nie jest to bezpieczeństwo.
OK! Kontynuując wątek.
Korzystam z Authlogic, standardowe logowanie użytkowników.
Dla mojego API będę używał basic auth. Zastanawiam się jak to wszystko połączyć w jednej aplikacji. Dane będę serwował jako JSON. Jak rozwiązać problem, że jak przychodzi zapytanie o JSON to użyj basic auth. …? Czy należy odpowiednio skonfigurować routes …?
Będę wdzięczny za podpowiedzi, tutoriale itp.
Nie powinno się wymuszać sposobu autentykacji w zależności od formatu, nawet sam autor al pisał o tym na grupie dyskusyjnej. Authlogic próbuje uwierzytelniania http basic przy każdym żądaniu, więc nie trzeba żadnego dodatkowego kodu w aplikacji.
nairda: ok, ale i tak w jakimś momencie muszę sprawdzić czy użytkownik zalogował się za pomocą basic auth, żeby dostał tylko i wyłacznie dane w formie JSON. …?
Może jakiś link tej tej dyskusji …?
Standardowe logowanie Authlogic chodzi super. Jednak basic auth nie chce. Jeśli basic auth jest przy każdym żądaniu, więc niczego dodatkowo nie zmieniałem w moim kodzie.
Testuję sobie http://user:pass@localhost:3000/account.xml i przekierowuje mnie do ekranu logowania.
Podobny problem jak w tym wątku powyżej :-/ Mam najnowszą wersję Authlogic, wszystko na Rails 2.3.2.