2012-06-26 8 views
19

Jeśli wszystkie wywołania interfejsu API są wysyłane za pośrednictwem protokołu HTTPS, czy HMAC dodaje dodatkowe zabezpieczenia? Na przykład, w oauth 2, klient wysyła swój tajny klucz do dostawcy bez żadnego mieszania. Czy jest to uważane za bezpieczne, ponieważ jest ponad https? Czy nie używając stricte oauth, używając HMAC na tym połączeniu, oauth 2 będzie bezpieczniejszy? Jeśli tak, dlaczego nie jest to standardowa część oauth 2?Czy HMAC jest niezbędny, jeśli wszystkie wywołania API są wykonywane przez https?

Odpowiedz

13

Standard OAuth 2 wymaga, aby serwer autoryzacji MUSI używać HTTPS na wszystkich swoich punktach końcowych, a klient POWINIEN wykorzystywać wywołanie zwrotne zabezpieczone protokołem HTTPS. Ponieważ treść wiadomości (nagłówki, parametry zapytania i fragmenty uwzględniające OAuth) są znane tylko serwerowi i klientowi, korzystanie z połączenia HTTPS jest uważane za bezpieczne. Tak więc nie ma zysku przy użyciu oddzielnego podpisu dla żądania autoryzacji, dlatego takie podpisy nie są nawet wymienione w standardzie.

Nie musi to jednak dotyczyć odpowiedzi. Jeśli klient otrzyma odpowiedź autoryzacyjną na niezabezpieczony oddzwanianie, wówczas nie może zweryfikować jego ważności. W takich przypadkach osoba atakująca może wysłać dowolne wyniki autoryzacji do klienta. Dodając podpis z parametrami wywołania zwrotnego, możesz tego uniknąć. Jednak wydaje się lepszym rozwiązaniem do korzystania z wzajemnego uwierzytelniania klienta/serwera z funkcją oddzwaniania HTTPS.

Chociaż nie ma rzeczywistego zysku za pomocą podpisów podczas autoryzacji, mogą być przydatne dostęp do chronionych zasobów, aby uniknąć kradzieży tokenów dostępu. Z tego powodu typ tokena MAC jest w standardzie, patrz section 7.1.

0

HMAC służy do uwierzytelniania, które określa, kim jesteś, https jest dla bezpieczeństwa transportu, które zapewnia, że ​​jeden z nich może zobaczyć zawartość twojego transportu.

Serwer autoryzacji Oauth 2 używa tajnego klucza lub hasła, określając kim jesteś. Ooken serwera zasobów Oauth2 z serwera autoryzacji określa, kim jesteś. Korzystanie z HTTPS zależy od tego, czy chcesz chronić swój tajny klucz i tokeny.

Powiązane problemy