Используйте 2 разных метода входа: токен JWT и вход в Google в одном приложении.

У меня есть приложение, которое находится на стороне клиента: приложение для Android, а на стороне сервера: api для отдыха на основе фляги, вход в систему с токеном JWT.

Для большей безопасности я также хочу объединить вход в систему с Google.

Проблема в следующем: наивное решение находится на стороне клиента: мне нужно «РАЗДЕЛИТЬ» код входа для двух случаев - это не так уж плохо, но позже для каждого запроса к серверу - мне нужно проверить, есть ли у меня jwt или данные пользователя Google и отправьте правильный вызов.

Затем и на стороне сервера - мне нужно «РАЗДЕЛИТЬ» свой код на каждой части Api, чтобы проверить, есть ли у него токен jwt или пользователь Google. Это наивное решение кажется мне уродливым, и я спрашиваю, есть ли лучший подход к этой проблеме.

Мой друг предложил мне отказаться от подключения jwt и использовать только Google, но со стороны пользователя я думаю, что лучше иметь 2 варианта и выбирать из них.


person jonb    schedule 10.10.2017    source источник


Ответы (1)


Прямой ответ: почему бы вам не дать пользователю токен JWT после того, как он вошел в систему с помощью Google? Как мы обычно это делаем: Вход в систему на клиенте -> Отправить токен Google -> Сервер проверяет и отправляет токен JWT -> Пользователь использует токен JWT, а сервер использует токен Google для обновления информации пользователя, такой как изображение профиля или имя.

person jobbert    schedule 10.10.2017
comment
Мне не нужна связь между JWT и токеном Google. Я хочу разрешить пользователям, которые не хотят входить в систему с помощью Google, использовать обычный вход с именем пользователя и паролем, а пользователям, которые хотят войти в систему с помощью Google, использовать его. Как я понимаю из вашего ответа, вы предлагаете объединить 2 решения, сначала войдите в систему с помощью Google, а затем используйте токен jwt. Но если пользователь не хочет использовать Google? - person jonb; 10.10.2017
comment
Насколько я знаю, это единственный способ. В противном случае вам потребуется активная аутентификация между пользователем и Google. - person jobbert; 10.10.2017
comment
Я читал об этом больше. Я понимаю, что для входа в систему пользователь может использовать вход в систему Google или обычный вход, точно так же, как они получат токен JWT в качестве ответа и будут работать с ним. Таким образом, нет необходимости менять каждое место в приложении. Я пытаюсь найти хороший способ сделать это на сервере Flask, который в настоящее время настроен только на JWT. - person jonb; 10.10.2017
comment
Это не требует больших усилий. Но сначала взгляните на политику в отношении социальных сетей. У них обычно есть правила о том, как часто вы должны обновлять изображение пользователя в социальных сетях и т. Д. - person jobbert; 10.10.2017