2011-02-09 9 views
5

Obecnie mamy usługę internetową opartą na protokole SOAP, której nasze aplikacje używają do uwierzytelniania użytkowników. Zasadniczo wysyłają żądanie SOAP z nazwą użytkownika i hasłem. Usługa sieci Web uwierzytelnia swoje dane uwierzytelniające w naszej pamięci danych i zwraca informacje o użytkowniku, jeśli uwierzytelnienie zakończyło się powodzeniem. Usługa internetowa jest zabezpieczona przy użyciu uwierzytelniania BASIC i SSL.Wysyłanie informacji poufnych do usługi REST

Musimy wprowadzić zmiany w tym serwisie internetowym i rozważałem ponowne napisanie go jako usługi REST. Usługi REST, które stworzyłem w przeszłości, były dość proste i nie wymagały bezpieczeństwa. Nigdy nie stworzyłem usługi REST, która używa poufnych informacji, więc mam kilka pytań/wątpliwości:

Po pierwsze, czy istnieje najlepsza praktyka do bezpiecznego wysyłania poufnych parametrów zapytania (poświadczenia użytkownika) do usługi REST? Nadal mogę korzystać z uwierzytelniania BASIC i SSL.

Po drugie, jeśli wysyłam zapytanie do usługi REST za pomocą testu POST, czy jest ona nadal uznawana za REST, czy jest wymagana GET dla zapytań REST?

+1

Polecam przeczytaniu poniższego StackOverflow Q & A na ten sam temat: http://stackoverflow.com/questions/7551/best-practices-for-securing-a-rest-api-web-service –

Odpowiedz

3

Można również użyć uwierzytelniania SSL i podstawowego z usługami sieciowymi REST.

Funkcja HTTP GET służy zwykle do pobierania danych (zapytań), ale można również użyć funkcji POST protokołu HTTP. GET jest szczególnie użyteczny, jeśli można użyć dowolnego typu buforowania HTTP. POST jest przydatny, jeśli musisz przesłać wiele danych w celu zdefiniowania zapytania lub jeśli twoja usługa sieciowa oczekuje złożonego formatu danych zamiast prostych argumentów.

0

Przechodzenie z protokołu SOAP do usługi REST cofa się, jeśli chodzi o bezpieczeństwo.

Jak daleko jak najlepsze praktyki:

  • Nie toczyć własne bezpieczeństwo. Użyj framework lub istniejącej biblioteki, która została recenzowana i przetestowana.
  • Nie należy przekazywać niezaszyfrowanych kluczy statycznych. Jeśli używasz protokołu HTTP Basic i wysyłasz go przez sieć, zaszyfruj go.
  • Najlepiej użyć kodu uwierzytelniania wiadomości (HMAC), ponieważ jest najbezpieczniejszy.

Why REST security doesn't exist

+0

Dlaczego zabezpieczenia REST nie istnieją - Nie znaleziono strony. –

1

Zamiast robić uwierzytelniania poprzez REST, można również rozważyć sieciowy protokół uwierzytelniania używać w połączeniu z usług internetowych. Technologie takie jak Kerberos i OAuth zostały zaprojektowane dla tego rodzaju przypadków użycia.

Aby odpowiedzieć na Twoje pytania, ale:

  1. REST zachęca wykorzystać protokoły HTTP i pokrewnych, więc za pomocą SSL i uwierzytelnianie podstawowe jest dość odpowiednie.

  2. REST zachęca do używania nie tylko GET i POST, ale nawet innych "czasowników" HTTP, takich jak PUT i DELETE. Używaj GET tylko dla idempotentnych operacji bez efektów ubocznych.

Powiązane problemy