Как реализовать логин пользователя через OAuth2.0 в JS приложении для доступа к REST API?
Есть свой REST API, доступ к определенным endpoint'ам должен предоставляться через OAuth2 (свой OAuth2 сервер).
К этому API необходимо прикрутить свой клиент на JS, в котором пользователя непосредственно смогут логинится под login/password, получать OAuth2 токен взамен и уже доступ будет к API через клиент на JS будет определяться только что полученным OAuth2 токеном.
Интуитивно я понимаю, что нужно зарегистрировать клиент для JS приложения (client_id, client_secret) и до логина пользователя оперировать им, потому получать новый токен пользователя и использовать его.
Но я не понимаю, какие client_id и client_secret надо использовать при логине нового пользователя, когда JS приложение зарегистрировано на администратора.
В конечном итоге вопрос заключается в том - как реализовать логин пользователя, для которого автоматически в БД создается клиент?
По мне так ни какого клиента не надо. Я не знаком с OAuth2 но предполагаю что пользователь при каждом входе получает разный токен и он гдето сохраняется. То есть система такая.
Пользователь логинится.
Сервер проверяет имя и пароль и если они валидны, генерит ключ или токен как угодно
Клиент получает данные пользователя. Типа объект с айди, именем, ключем и всем остальным и сохраняем в какмом-нибудь storage.
Теперь, при любом запросе к API мы передаем айди пользователя и токен.
На сервере проверям, этот ли токен у этого пользователя, и если да то проверяем есть ли у него права получить данные этого запроса.
В этой схеме, естественно каки-то запросы к API на сервер, проходят даже если нет токена и идентификатора пользователя. Например запрос на авторизацию, или на получение публичной информации которую видят все.
В общем-то да, но...
1. Зачем изобретать велосипед в виде своего клиента, если он уже написан и поддерживается Google?
2. Либо зачем писать тонны кода, вызывая WEB-api гугля, если можно просто создать объект и вызвать его методы?
Надо мне, видимо, поправиться. Автор вопроса не уточнял, чей OAuth2-api он собирается использовать, а я перевел все на Гугль. Видимо, потому как я именно с Гуглем сейчас и разбираюсь. С остальными должно быть примерно одинаково или похоже.