Który z nich jest bezpieczniejszy i dlaczego?
Oba są bezpieczne, zależy to od środowiska, w którym go używasz.
Nie widzę powodu, dla którego dodatkowy krok (wymiana kodu autoryzacji na token) jest dodawany w jednym przepływie pracy, gdy serwer może bezpośrednio wystawić token Access.
To jest proste. Twój klient nie jest bezpieczny. Zobaczmy to szczegółowo.
Weź pod uwagę, że tworzysz aplikację przeciwko Instagram API
, więc rejestrujesz swoją aplikację Instagram
i określasz, której API's
potrzebujesz. Instagram
zapewni Ci client_id
iclient_secrect
Na swojej stronie internetowej ustawiasz link, który mówi. „Przyjdź i użyj mojej aplikacji”. Kliknięcie tej aplikacji internetowej powinno wywołać dwa wywołania Instagram API
.
First
wyślij zapytanie do Instagram Authentication Server
z poniższymi parametrami.
1. `response_type` with the value `code`
2. `client_id` you have get from `Instagram`
3. `redirect_uri` this is a url on your server which do the second call
4. `scope` a space delimited list of scopes
5. `state` with a CSRF token.
Nie wysyłaszclient_secret
, nie możesz zaufać klientowi (Użytkownikowi i / lub jego przeglądarce, która próbuje użyć Twojej aplikacji). Klient może zobaczyć adres URL lub skrypt java i client_secrect
łatwo znaleźć plik. Dlatego potrzebujesz kolejnego kroku.
Otrzymujesz code
i state
. code
Tu jest temporary
i nie jest zapisany w każdym miejscu.
Następnie second
dzwonisz do Instagram API
(ze swojego serwera)
1. `grant_type` with the value of `authorization_code`
2. `client_id` with the client identifier
3. `client_secret` with the client secret
4. `redirect_uri` with the same redirect URI the user was redirect back to
5. `code` which we have already received.
Ponieważ połączenie jest wykonywane z naszego serwera, możemy bezpiecznie użyć client_secret
(co pokazuje, jak jesteśmy), z code
którego pokazuje, że użytkownik zezwolił client_id
na korzystanie z zasobu.
W odpowiedzi będziemy mieć access_token