Dużo czytałem na temat OAuth2, próbując obejść ten problem, ale wciąż jestem z czegoś zdezorientowany.
Rozumiem, że klient autoryzuje się u dostawcy OAuth (na przykład Google) i zezwala serwerowi zasobów na dostęp do danych profilu użytkownika. Następnie klient może wysłać token dostępu do serwera zasobów i zwrócić mu zasób.
Ale to, co nie wydaje się być objęte żadną dokumentacją, dzieje się, gdy aplikacja kliencka prosi serwer zasobów o zasób i przekazuje mu token dostępu. Wszystko, co przeczytałem do tej pory, mówi, że serwer zasobów odpowiada tylko żądanym zasobem.
Ale to wydaje się być wielką dziurą, na pewno serwer zasobów musi w jakiś sposób sprawdzić poprawność tokena dostępu, w przeciwnym razie mógłbym po prostu sfałszować każde stare żądanie i przekazać stary, skradziony, fałszywy lub losowo wygenerowany token i po prostu go zaakceptowałby.
Czy ktoś może wskazać mi proste wyjaśnienie OAuth2, ponieważ jak dotąd te, które przeczytałem, wydają się niekompletne.
Sprawdzanie poprawności tokenów jest zazwyczaj obsługiwane na 1 z 2 sposobów.
1) Token jest podpisany kryptograficznie przy użyciu wstępnie udostępnionych kluczy. Ma to oczywiste braki w stosowaniu w rozproszonych, proliferujących systemach.
2) Serwer autoryzacji (AS) zapewnia punkt końcowy dla sprawdzania poprawności tokenu lub introspekcji. Ta metoda została znormalizowana w IETF RFC 7662 w październiku 2015 r., Patrz: https://tools.ietf.org/html/rfc7662
Pytanie / odpowiedź na pytanie o przepełnienie stosu zawiera przykłady od Google i Github: /programming/12296017/how-to-validate-an-oauth-2-0-access-token-for-a-resource-server
źródło
czytasz specyfikację dotyczącą sprawdzania poprawności tokena:
https://tools.ietf.org/html/rfc7662
mam nadzieję, że to pomoże - zaznacz odpowiedź, jeśli odpowiada na twoje zapytanie / problem
źródło