API Magento 2 rest - Как управлять жизненным циклом аутентификации API в приложении для мобильных устройств?

9

В веб-API Magento [2.2.4], когда я передаю имя пользователя и пароль, он генерирует токен для этого конкретного клиента (который действителен только в течение 1 часа - он настраивается администратором Magento)

http://magento.host/index.php/rest/V1/integration/customer/token?username=test.user@test.com&password=test@123

который возвращает токен.

После генерации токена, когда мы передаем этот токен в заголовок.

Авторизация :: Носитель * Значение токена *

http://magento.host/index.php/rest/V1/customers/me

Который возвращает данные клиента.

Вышеприведенный случай, который я объяснил, работает нормально для webAPI в magento2, который я тестировал в POSTMAN .

Теперь дело в том,

Каждый час регенерация токена и повторный вход в систему каждый час не логичны для мобильного приложения.

Тогда как Magento управляет данными для входа пользователя и аутентификации в мобильном приложении, если он разрабатывает API согласно сервисным контрактам

  • Как долго я должен позволить моему доступ лексемы к EXIST до истечения срока действия в мобильных приложениях?
    • Я не хочу заставлять своих пользователей проходить повторную аутентификацию каждый час в мобильном приложении.
    • Как правильно управлять жизненным циклом токена OAuth2 API для мобильного приложения.

Внесение изменений в Access Token Время жизни не было бы логичным решением, поскольку приложение и Интернет должны иметь разные часы жизни Token.

введите описание изображения здесь

Адитья шах
источник
Вы пытались продлить срок службы токена из магазина-> конфигурация-> сервисы-> OAuth-> Срок действия токена клиента (часы) -?
Мантан Дейв,
Нет, проверяя это, сделав пустое значение Customer Token Lifetime (Hours) - это отключит функцию, если значение будет пустым. Так может сработать.
Адитья Шах,
Этого не произойдет, потому что когда мы очищаем значение Customer Token Lifetime, он будет заново генерировать
Адитья шах,
Если у вас есть доступ к коду магазина, к которому вы подключаетесь, или вы можете написать модуль magento для своего приложения, одним из решений будет обновление действительной даты токена при каждом запросе при использовании токена клиента, аналогично сеансу. Тогда, пока ваше приложение не выполнит никаких запросов в течение срока действия токена, клиент не будет вынужден повторно авторизоваться.
Зефирин
но основываясь на том, какой флаг мы считаем, что используется токен клиента.
Адитья Шах,

Ответы:

3

Для проверки на токен клиента Magento проверяет два критерия

  1. Отменен ли токен (это происходит при выходе пользователя из системы): отозванный сохраняется как 1 в таблице oauth_token
  2. Токен фактически присутствует в oauth_tokenтаблице

Magento запускает cron для удаления жетонов с истекшим сроком действия (согласно времени жизни в настройках администратора) из таблицы ( vendor\magento\module-integration\Cron\CleanExpiredTokens.php)

Возможное решение

  1. Увеличьте время жизни токена от администратора
  2. Переопределите вышеупомянутый cron, чтобы удалить только тот токен, который был отозван, т.е.

Надеюсь, что это ответ на ваш вопрос

Вишвас Бхатнагар
источник
Я чувствую, что вы говорите о пользовательских ролях? как админ ... также, пожалуйста, примите ответ
Вишвас Бхатнагар
Нет, я говорю об аутентификации M2, используемой в мобильном приложении в фоновом режиме, потому что каждый час регенерация токена и повторный вход в систему каждый час не логичны для мобильного приложения. Это должно быть аутентифицировано только один раз, и когда пользователь меняет пароль (подобное действие)
Адитья шах
я думаю, что я предложил решение для этого в моем
предыдущем
1
Спасибо чувак!! Я много искал, но не нашел никакого решения, кроме твоего :)
Адитья Шах