Срок действия приложения истекает через 1 час, даже если я регулярно сообщаю о своей активности

Раньше у меня была проблема, что срок действия моего приложения UCWA истек через некоторое время. В качестве решения этой проблемы я обнаружил, что мне следует время от времени делать запрос, чтобы поддерживать его в рабочем состоянии. Я решил установить интервал и каждые 3 минуты запрашивать reportMyActivity ресурс.

Однако, несмотря ни на что, мое приложение всегда истекает через 1 час. Есть ли какое-нибудь решение для этого? В качестве альтернативы, каков рекомендуемый способ повторного создания приложения, не покидая веб-сайт, используя библиотеки примеров?

Спасибо.


person leopik    schedule 30.04.2015    source источник
comment
Когда вы говорите, что срок действия истекает через 1 час, вы имеете в виду, что любой запрос после этого периода времени приводит к ошибке 404 на ранее известных ресурсах? Вы выполняете запрос GET на канале событий? Если да, то видите ли вы данные по истечении срока действия приложения?   -  person ShelbyZ    schedule 04.05.2015
comment
Под истечением срока действия я подразумеваю 401 Unauthorized ... и теперь, когда вы упомянули об этом, я думаю, что это не проблема с UCWA, а с аутентификацией. В любом случае, если я продолжу сообщать о своей активности каждые 3 минуты, срок действия моего приложения когда-либо истечет (срок действия моего токена доступа истечет через 8 часов)? Нужно ли мне сообщать о своей активности, чтобы поддерживать работу приложения, или достаточно просто прослушивать канал событий и, следовательно, делать запросы время от времени (максимум 10-минутный интервал)? Кстати, я использую пассивную аутентификацию для аутентификации.   -  person leopik    schedule 04.05.2015
comment
Запрос reportMyActivity — это то, как вы должны поддерживать приложение в течение времени действия его токена, которое составляет 8 часов. Через 8 часов запросы к любому ресурсу должны привести к ошибке 401/404, указывающей на то, что срок действия токена истек и приложение было отозвано. Прослушивания канала событий недостаточно для поддержания работоспособности приложения. Я чувствую, что это комбинация прослушивания канала reportMyActivity/event, которая «должна» поддерживать работу приложения.   -  person ShelbyZ    schedule 04.05.2015
comment
Ошибка с сервера: 401 Unauthenticated - срок действия веб-билета истек. Означает ли это токен доступа?   -  person leopik    schedule 04.05.2015
comment
Это было бы правильно, какое значение продолжительности вы видите, когда получаете исходный ответ для токена? Вы должны интерпретировать это значение как секунды, пока не истечет срок действия токена.   -  person ShelbyZ    schedule 04.05.2015
comment
На самом деле я получаю некоторые случайные значения. После обновления веб-сайта (и, следовательно, воссоздания приложения) несколько раз, вот значения expires_in из /WebTicket/oauthtoken: 3300, 5178, 2318, 4179.   -  person leopik    schedule 05.05.2015
comment
Это указывает на то, что токен активен только в течение 38,6–86,3 минут.   -  person ShelbyZ    schedule 06.05.2015


Ответы (1)


Время истечения срока действия токена не совсем важно, важно то, что 401 Unauthorized указывает на то, что срок действия токена истек. В этом неудачном запросе должен быть один (или два) заголовка WWW-Authenticate, которые можно использовать, чтобы указать, где получить следующий токен. Вы можете рассмотреть возможность изменения логики, отвечающей за отправку запросов в UCWA, чтобы отразить что-то вроде следующего:

  1. Послать запрос
  2. Проверить код статуса ответа
  3. If 401...
    • Check WWW-Authenticate header and re-issue authentication request(s)
    • Сохраните токен и вернитесь к шагу №1.
  4. Ответ процесса

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

person ShelbyZ    schedule 06.05.2015
comment
В ответе 401 у меня есть HTML-страница 401 по умолчанию и нет заголовка WWW-Authenticate, однако я следую структуре, которую вы описали (отправить запрос, получить 401, повторно аутентифицировать, повторно отправить запрос, обработать ответ), поэтому спасибо за ответ. - person leopik; 06.05.2015