7

Я реализовал безопасность для своих веб-api (индивидуальных учетных записей), как обсуждалось here.Атрибуты авторизации веб-API ASP.NET, срок действия которых истекает раньше

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

AccessTokenExpireTimeSpan = TimeSpan.FromDays(15) 

например:

{ 
    "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 минут. Когда я запрашиваю какой-либо метод «get»/«post» в течение 5 минут, я получаю правильный ответ с моими данными в JSON. Короче говоря, авторизация удалась.

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

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

<sessionState timeout="180" /> 

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

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

Спасибо.

+0

У меня такая же проблема !! Любая помощь кому-нибудь? –

+0

Добавление машинного ключа сделало трюк. why_not также упомянул об этом ниже. Как отметить сообщение why_not в качестве ответа? –

ответ

4

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

5

Добавить в web.config не зависеть от пула приложений рециркуляции

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

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

-1

Попробуйте установить Idle Time-аут (в минутах) до более чем 5 минут (найдено в iis application pool-> дополнительных настройках).

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