Срок действия маркеров авторизации веб-API ASP.NET истекает раньше

Я реализовал безопасность для своего веб-API (отдельных учетных записей), как обсуждалось здесь.

Я разместил сайт на godaddy (общий хостинг), и он работает нормально. Когда я запрашиваю токен, используя URL-адрес «domain.com/token», я получаю токен со сроком действия в течение 15 дней. Я установил это в «StartupAuth.cs», используя

AccessTokenExpireTimeSpan = TimeSpan.FromDays(15)

e.g.:

{
  "access_token":"qwertyuiop.....",
  "token_type":"bearer",
  "expires_in":1209599, 
  "userName":"[email protected]",
  ".issued":"Wed, 11 Feb 2015 01:00:00 GMT",
  ".expires":"Thu, 26 Feb 2015 01:00:00 GMT"
}

(Я помещаю значения в приведенный выше код, но вы поняли идею поля «.expires».

Через 5 минут после получения токена, когда я пытаюсь получить доступ к «получить» или «отправить» или к любому методу в моем API, передав авторизацию: токен носителя в заголовке как:

Authorization: Bearer qwertyuiop.....

Я получаю эту ошибку:

{"Message":"Authorization has been denied for this request."}

Хотя прошло всего 5 минут, а токен должен действовать 15 дней, срок его действия истекает в течение 5 минут. Когда я запрашиваю любой метод «получить»/«отправить» в течение 5 минут, я получаю правильный ответ с моими данными в формате JSON. Короче говоря, авторизация прошла успешно.

Я повторил это поведение, протестировав его с помощью Fiddler, плагина REST для Chrome и с помощью мобильного приложения, использующего API.

У меня есть значения web.config для сеанса, как показано ниже (я думал, что это связано)

<sessionState timeout="180" />

Обратите внимание, что проверка подлинности с помощью форм не используется, поэтому тайм-аут для этого раздела в web.config не требуется.

Есть идеи, что происходит? Этот тайм-аут заставляет пользователей мобильных приложений, использующих API, время от времени повторно входить в систему. Любая помощь будет оценена по достоинству.

Спасибо.


person Vaibhav J.    schedule 12.02.2015    source источник
comment
У меня точно такая же проблема!! Кто-нибудь поможет?   -  person Austin Harris    schedule 18.03.2015
comment
Добавление машинного ключа помогло. Why_not также упомянул об этом ниже. Как мне отметить сообщение почему_не как ответ?   -  person Vaibhav J.    schedule 23.03.2015


Ответы (3)


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

person why_not    schedule 19.03.2015

Добавьте в web.config, чтобы его не затронул перезапуск пула приложений.

<system.web>
   <machineKey validationKey="21F090935F6E49C2C797F69BBAAD8402ABD2EE0B667A8B44EA7DD4374267A75D7AD972A119482D15A4127461DB1DC347C1A63AE5F1CCFAACFF1B72A7F0A281B"
            decryptionKey="261F793EB53B761503AC445E0CA28DA44AA9B3CF06263B77"
            validation="SHA1"/>

Прочитайте здесь, как создать https://support.microsoft.com/en-us/kb/312906

person Toolkit    schedule 30.11.2015

Попробуйте установить время простоя (в минутах) более 5 минут. Вы можете найти этот параметр в разделе

 iis application pool->advanced settings
person user2587230    schedule 02.02.2017