Я создаю приложение, которое использует Github OAuth , которое использует поток авторизации. Я впервые использую OAuth, поэтому хочу убедиться, что все делаю правильно. Я представляю что-то вроде:
Пользователь нажимает Continue with Github
. Мы вызываем GH url и предоставляем URI перенаправления внешнего интерфейса. Приложение принимает code
и отправляет его на сервер. Он обменивает его на токен доступа, затем получает пользователя от API, получает идентификатор и проверяет, существует ли он в базе данных. Если это так, он создает токен JWT и отправляет ответ типа [token
, ...
].
Я надеюсь, что так и должно быть.
Вопрос в том, что делатьесли пользователь не существует. В этом случае я также хочу попросить пользователя ввести имя пользователя в моем приложении (а также принять ToS и т. Д.). Поэтому у меня есть два варианта: отправить обратно код или отправить токен доступа.
Если я отправлю код, как только пользователь введет имя пользователя, сервер снова будет запрашивать токен доступа. Мне кажется это повторением.
Но так как токен доступа является функцией секрета моего приложения, я сомневаюсь, чтобы он был на клиенте. Хотя это убеждает меня в обратном:
- токен доступа должен быть подписью секрета приложения и не должен пропускать секрет приложения (верно?)
- мы можем предположить, что приложение
store
безопасен, потому что, ну, это состояние приложения - соединение SSL
Так что же лучше? Ура!