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
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.
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.
- 1. Wykrywanie, czy i kiedy są wykonywane wywołania jQuery AJAX
- 2. Wyjaśnienie OpenSSL 0.9.8L Obsługa współbieżności - czy wystąpienia SSL mogą być używane przez wiele wątków, jeśli są wykonywane jednocześnie?
- 3. Czy instrukcje Python Inline są wykonywane dwukrotnie?
- 4. Kiedy wykonywane są funkcje javascript
- 5. Czy finalizatory .net są zawsze wykonywane?
- 6. Dlaczego wszystkie konteksty są wykonywane, gdy nie podano w aktualizacji?
- 7. Dlaczego moja plakietka coveralls.io nie jest aktualizowana, nawet jeśli kompilacje są wykonywane?
- 8. Jakie operacje wstępnego przetwarzania są wykonywane przez Tesseract OCR?
- 9. jQuery czekać aż wszystkie animacje stronie są wykonywane
- 10. Czy self.iVar jest niezbędny do uzyskania mocnych właściwości z ARC?
- 11. Czy węzeł bias jest niezbędny w bardzo dużych sieciach neuronowych?
- 12. Czy wywołania asynchroniczne :: asio są automatycznie wyłączane?
- 13. Jeśli warunek "if" ma wartość false, instrukcje nie są wykonywane w chrome, ale są wykonywane w przeglądarce Firefox
- 14. Ukryj kolumnę, jeśli wszystkie wiersze są puste.
- 15. Statyczne bloki - kiedy są wykonywane
- 16. Czy var jest niezbędny podczas deklarowania zmiennych JavaScript?
- 17. Jak rejestrować wszystkie wywołania API przy użyciu Guzzle 6
- 18. Żądania podpisania HMAC w Pythonie
- 19. Czy ten api jest spokojny?
- 20. Jaki jest punkt protokołu SSL, jeśli skrzypek 2 może odszyfrować wszystkie połączenia za pośrednictwem protokołu HTTPS?
- 21. JavaScript i jQuery nie są bezpieczne przez https
- 22. Jeśli wywołanie onComplete jest wykonywane dla podmiotu RxJava, czy muszę ręcznie anulować subskrypcję ponownie?
- 23. GAE dev_appserver.py przez HTTPS
- 24. Kiedy wykonywane są kwerendy LINQ-SQL?
- 25. HMAC SHA1 ColdFusion
- 26. Czy wszystkie wywołania RESTful API powinny być zdefiniowane w usłudze kątowej?
- 27. Czy źle jest śledzić zmienne wywołania zwrotnego?
- 28. strawienia/hmac jest częścią standardowego ruby lib
- 29. Metody klasy Python zawsze są wykonywane dwukrotnie.
- 30. Sprawdź, czy wszystkie znaczniki są zamknięte