0

У меня есть экземпляр Identity Server Thinktecture v3 в Azure, размещенный как WebApp. В общем, он работает так, как ожидалось, но у меня есть некоторые проблемы, пытающиеся использовать токен обновления через токен идентификатор/соединение/токен конечная точка с refresh_token тип гранта. У меня есть клиент, который использует поток кода авторизации, и это настройка, связанную с параметрами токенов обновления в отношении данного клиента:Identity server 3 проблема обновления токена при развертывании в Azure

// refresh token options 
AccessTokenType = AccessTokenType.Jwt, 
AccessTokenLifetime = 3600, 
RefreshTokenUsage = TokenUsage.OneTimeOnly, // Every time generates new refresh token. Not only access token. 
RefreshTokenExpiration = TokenExpiration.Sliding, 
SlidingRefreshTokenLifetime = 1296000 

для людей, которые работали с этим ясно, что я использую JWT жетоны и мой маркер доступа действителен в течение 1 часа, а после этого, без необходимости повторного входа в систему на Identity Server, я могу использовать токен обновления и получить новый доступ и обновить токены. Мой токен обновления должен быть действительным в течение 15 дней (1296000 сек.). Что на самом деле происходит, так это то, что он работает не так, как ожидалось. По какой-то причине, когда я решаю сделать звонок к моему REST API (полагающейся стороне Identity Server) через полтора часа после предыдущего, я получаю ответ invalid_grant.

Я решил немного протестировать его и пропустил токен доступа через 2 минуты и обновил токен в 10. Ну, тогда я попытался сделать звонок через 1, 2, 3 минуты после токена доступа истек, и он работал, как ожидалось. Я действительно не хочу делать такого рода тестирование с 1-часовым токеном доступа, поэтому я решил спросить здесь, есть ли у кого-то это раньше.

ответ

0

Ваш доступ лексема время жизни 1 час и обновления маркера срок службы составляет 15 дней.

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

Что касается вашего тестирования, то в стеке класс JwtSecurityTokenHandler несет ответственность за проверку токена. По умолчанию параметры проверки позволяют mismatch of 5 minutes обслуживать изменения времени между системами. Модификация TokenValidationParameters.DefaultClockSkew на меньшее значение должна помочь в вашем случае.

+0

Я знаю на клиенте, когда мой токен доступа истек. Именно поэтому я использую токен обновления, чтобы получить новый токен доступа и использовать его. Я звоню в конечную точку токена обновления, но по какой-то причине такой подход перестает работать в какое-то время. – user2128702

+0

Что перестает работать? Нажатие конечной точки токена на IdSrv с текущим токеном обновления, чтобы получить как новый токен доступа, так и новый токен обновления? Или ударить свой API с помощью токена доступа? –

+0

Да, вызов конечной точки маркера возвращает ошибку invalid_grant. Он больше не распознает токен обновления. – user2128702

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