2016-09-09 3 views
2

Я работаю над мобильным приложением, которое использует Stormpath на стороне сервера для аутентификации и авторизации. Мне нужно поддерживать одного и того же пользователя на нескольких устройствах, но я хочу иметь возможность отслеживать его и ограничивать его, если захочу.Отслеживание нескольких логинов от одного и того же пользователя с помощью Stormpath

Мое приложение в настоящее время использует Stormpath для входа пользователя с использованием электронной почты/пароля или MDN/password, а при успешном входе в систему возвращает токен JWT для доступа к серверу API.

Я имею в виду следующий подход:

  • Держите список сеансов в учетной записи пользователя. Каждый раз, когда пользователь регистрируется, добавляется новая запись с идентификатором device_id и предоставленным JWT. Когда пользователь подписывается, запись удаляется или помечена как неактивная.
  • Когда пользователь пытается выполнить вход на другое устройство, если я хочу ограничить только одно активное устройство, я бы отключил другую запись и истекал JWT, чтобы приложение могло ее обнаружить и потребовать повторного входа в систему.
  • Если бы я хотел ограничить пользователя максимум n сеансами, я мог бы просто подсчитать записи и заставить пользователя подписаться на одной из других сессий, прежде чем позволить ему/ей войти на новое устройство.

Это хороший подход? Есть ли лучший способ сделать это? Каковы проблемы с этим методом?

ответ

1

Я работаю на Stormpath на мобильных SDK. Вы можете использовать функцию токена доступа/обновления, которую мы должны выполнить.

  • Каждый раз, когда пользователь регистрируется, создается токен доступа и обновления. Когда пользователь подписывается, токен обновления удаляется, а также токен доступа.
  • Когда пользователь пытается выполнить вход на другое устройство, если вы хотите ограничить только одно активное устройство, вы можете удалить все остальные токены &.
  • Если вы хотите ограничить пользователя максимум n сеансами, я могу просто подсчитать записи и заставить пользователя удалить один из токенов обновления, прежде чем разрешить ему/ей войти на новое устройство. Затем вы должны пройти через маркеры доступа и удаления из них с сопрягая «Rti» (обновить маркер ID)

Несколько заметок о реализации этого:

  • Если вы используете интеграцию Stormpath Framework , по умолчанию необходимо проверить токен доступа локально (вместо отправки его на Stormpath для проверки). Это связано с тем, что у них есть подпись, которая может быть подтверждена SDK. Тем не менее, для выхода из системы пользователь должен либо установить это для удаленной проверки, либо использовать короткий токен доступа (и использовать токены обновления для управления каждым «сеансом»)
  • Обновить токены не могут хранить " customData ", поэтому вам нужно будет поддерживать метаданные об обновлении токена в customData учетной записи или в собственной базе данных.
  • В качестве альтернативы вы можете «создать» Ключи API для каждого пользователя и использовать их вместо сеансов для каждого пользователя. Вы можете использовать имя ключа API или атрибуты описания, чтобы отслеживать, где пользователь входил из/из.
+0

Спасибо Эдварду, это в значительной степени соответствует тому, о чем я думал. Я ценю ваше подтверждение. – DiegoK

Смежные вопросы