Oauth + SPA + API бэкэнд - PullRequest
       35

Oauth + SPA + API бэкэнд

0 голосов
/ 21 января 2019

Я настраиваю службу, которая должна авторизоваться на основе существующего Gitlab в качестве поставщика OAuth.
Сервис представляет собой SPA, который обслуживается сервером разработки веб-пакетов в режиме разработки и сервером nginx в производственном режиме.
Я также настраиваю внешний API, который должен обрабатывать базу данных и делать запросы к данному экземпляру gitlab (например, репозитории pull).

Мой SPA авторизуется против OAuth Gitlab с потоком implicit_grant и получает токен доступа. В настоящее время я передаю access_token после перенаправления на мой API-интерфейс, и там я получаю имя пользователя и имя пользователя Gitlab через запрос к экземпляру gitlab с access_token. С их помощью я генерирую jwt и отправляю его клиенту (SPA) и сохраняю его там, чтобы я мог авторизовать свой API с этим JWT.
Как бы я обработал начальный access_token в моем бэкэнде (потому что мне нужен токен для вызовов gitlab)?
В настоящее время я думаю о том, чтобы записать его пользователю в базе данных и получать пользователя каждый раз, когда он делает запрос (обычный поток паспортов), поэтому у меня также есть токен. Но что, если токен станет недействительным или истечет срок его действия?
Если я использую перехватчик в бэкэнде и если токен недействителен (gitlab даст мне 401), перенаправьте 401 на мой клиент, дайте ему получить новый токен и передать его обратно бэкенду, сгенерируйте новый JWT, отправьте этот снова к клиенту и позволить ему сделать тот же запрос, что и исходный запрос (также через перехватчик)?
Или я должен просто перенаправить 401 на мой клиент, позволить ему получить новый токен, позволить ему публиковать этот токен, например, в / renewToken и сохранить токен в базе данных и использовать старый JWT?

Надеюсь, кто-нибудь может помочь мне понять этот поток.

1 Ответ

0 голосов
/ 22 января 2019

API управления учетными данными должен быть тем, что вы ищете на клиенте. Это позволит получить идентификатор и токены доступа, с которыми вы можете сравнить токены доступа с вашим сервером / ap, а затем проверить токен идентификатора.

Не видел пример Git, но есть примеры Google и Facebook.

...