Tworzę interfejs API i osobną aplikację typu front-end, która pobiera wymieniony interfejs API. W moim konkretnym przypadku używam Laravel Passport dla mojego API i niektórych VueJS dla mojej aplikacji frontendowej.Rejestracja użytkownika dla API/SPA
Aby użytkownik mógł utworzyć konto, użytkownik musi POST
do trasy (/oauth/token
) na API, które wymaga client_secret
zostać przekazana (https://laravel.com/docs/5.3/passport#password-grant-tokens).
Jedynymi opcjami widzę to:
- posiadające
client_secret
wysłany jako nagłówek z mojego frontend aplikacji. Jednak wystawienie tego tokena na otwartej przestrzeni nie wydaje się mądre. - Nie wymagają w ogóle
client_secret
. To nie wydaje się dużo lepsze niż opcja 1. - Masz dynamiczną stronę na mojej aplikacji frontendowej, która może bezpiecznie przechowywać
client_secret
, a następnie wysłać ją do API. Chociaż jest to oczywiście najbezpieczniejsze, wydaje się, że częściowo pokonało to cel w pełni statycznej nakładki (SPA).
Jaka jest najlepsza praktyka dla tego rodzaju podejścia? Szukałem, jak to się robi w ogóle z API i SPA, ale nie znalazłem niczego, co wskazywałoby mi właściwy kierunek.
Zaczynam myśleć, że dla rejestracji, CSRF lub innego zabezpieczenia opartego na tokenie nie ma znaczenia. Ponieważ rejestracja użytkownika jest prawdopodobnie publiczna, żadna ochrona po stronie klienta, która jest sprawdzana przez serwer, nie będzie bardzo skuteczna. – tptcat