2015-03-04 2 views
3

У меня есть этот веб-проект ASP ASP для веб-приложений, который использует аутентификацию BEARER TOKEN.ASP.NET SPA WEBAPI BEARER TOKEN не запомнился на winhost

Я развернул его в пару разных мест, локально и лазурное облако, и я НЕ вижу эту проблему.

Из-за бюджетных причин я решил купить у хостинговой компании (winhost). Когда сайт работает с этого хоста, я вижу только следующую проблему.

Проблема заключается в том, что после того, как вы зашли на сайт и простоя в течение X минут, следующий запрос провалится, пока вы не обновите и не войдете в систему. (Я получаю 401 (неавторизованный))

Срок действия токена, по-видимому, составляет 10-20 минут вместо 2 недель (который по умолчанию работает на лазурном экране и на моей визуальной студии). Я также распечатал токен, когда получил его, и это 2 недели.

Поведение, которое я ожидаю, это токен-носитель, который должен быть кэширован (который я подтвердил путем регистрации заголовка), затем отправляется со следующим запросом, который затем разрешен и возвращает результаты.

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

Любые идеи?

Единственная вещь, которую я мог найти, соответствует описанию того, что я вижу, - это эта ссылка. ASP.NET Web API Authorization tokens expiring early

Я бы прокомментировал это сообщение, но у меня недостаточно высоких точек репутации. Из удобства я скопировал этот пост ниже.

У меня есть безопасность для моего веб-ави (индивидуальные счета), как обсуждалось here.

У меня есть сайт на 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

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

0

here Ответил

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

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

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

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