Аутентификация в реактивном режиме: лучшие подходы - PullRequest
0 голосов
/ 04 февраля 2020

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

Стратегия

После успешного входа в систему сервер возвращает токен auth и refre sh токен (оба jwt). Токен авторизации действителен в течение 30 минут, токен refre sh действителен в течение 6 месяцев. Я храню оба токена в цепочке для ключей (ios) или в общих настройках (android). Всякий раз, когда на сервер делается запрос (1), токен авторизации отправляется с запросом в заголовке авторизации. На стороне сервера токен аутентификации проверяется на достоверность (истек ли он или нет?). Если токен истек, сервер отправляет ответ приложению, содержащий «please_refre sh». Это должно сообщить приложению, что токен refre sh должен быть отправлен на сервер для создания нового токена авторизации. Когда это сделано, исходный запрос (1) должен быть выполнен снова с новым токеном авторизации.

// valid auth token
+-------------------+                                   +-------------------+ 
| CLIENT            |                                   | SERVER            |
|                   | ----- auth token to server -----> |                   |
| auth token: aaa   |                                   | auth token OK     |
| refresh token: bbb| <---- response to client   ------ |                   |
|                   |                                   |                   |
+-------------------+                                   +-------------------+

// invalid auth token
+-------------------+                                   +-------------------+ 
| CLIENT            |                                   | SERVER            |
|                   | ----- auth token to server -----> |                   |
| auth token: aaa   |                                   | auth token NOT OK |
| refresh token: bbb| <---- 'please_refresh_token' ---- |                   |
|                   |                                   |                   |
|                   | ----- refresh token to server --> | create new auth   |
|                   |                                   |             token |
| new auth tk: ccc  | <---- new auth token to client -- |                   |
|                   |                                   |                   |
|                   | ---> new auth token to server --- | auth token OK     |
|                   |                                   |                   |
|                   | <---- response to client    ----- |                   | 
+-------------------+                                   +-------------------+

Является ли это хорошей стратегией для аутентификации пользователя? Другой подход заключается в отправке токена refre sh вместе с токеном аутентификации в первом запросе и обновлении токена аутентификации сразу же после его истечения.

Мои вопросы по этой стратегии:

  • Это хороший подход? Или есть место для улучшений?
  • Через 6 месяцев токен refre sh становится недействительным, поэтому пользователь должен снова войти в систему. Я действительно не хочу этого: я хочу, чтобы пользователь входил в систему столько, сколько он / она хочет. Как я могу решить эту проблему? Должен ли я добавить третий токен в «refre sh the refre sh token»? (Мне это не кажется правильным).
  • Если этот подход (аутентификация / refre sh токен) не подходит для go, может кто-нибудь указать мне правильное направление?

Заранее спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...