Я следил за замечательным учебником Taiser Joudah для реализации токенов обновления с Asp.Net Web Api 2 и Owin. Все прошло так хорошо ... кроме того, что я не могу заставить его работать. :-) Все это «кажется», похоже, работает до тех пор, пока я не запрошу токен обновления. Тогда все, что я получаю, это:OAuth Обновить токен не deserialize/invalid_grant
“error”: “invalid_grant”
и описания для описания. Один из комментариев к этому сообщению имел тот же самый симптом, и ответ заключался в создании MachineKey для web.config. Я попробовал это, но это не помогло. И я думаю, что, возможно, это применимо только тогда, когда сервер Auth и Resource все равно один и тот же, что и в этом случае.
В нижней строке используется PostMan. Я могу сделать запрос для токена обновления, а в ReceiveAsync - контексту. Дезинциализация без очереди не работает. После вызова «context.DeserializeTicket» (refreshToken.ProtectedTicket), «context.Ticket по-прежнему равен нулю. Любопытно, если я вручную десериализую ProtectedTicket с использованием AccessTokenFormat токена токена, он будет десериализоваться должным образом. Но он не работает с помощью объекта RefreshTokenFormat Обновлять лексемы:
var thisWorks = Startup.OAuthOptions.AccessTokenFormat.Unprotect(refreshToken.ProtectedTicket);
var thisDoesnt = Startup.OAuthOptions.RefreshTokenFormat.Unprotect(refreshToken.ProtectedTicket);
Он уверен, кажется, как проблема конфигурации ... но я ломал голову, и по сравнению много образцов. Что может быть причиной этого?
EDIT Упс ... имел в виду ссылки на учебник статьи: http://bitoftech.net/2014/07/16/enable-oauth-refresh-tokens-angularjs-app-using-asp-net-web-api-2-owin/
: - | Отменить миссию. Самоназванные раны. Это долгая история, но по сути дела я делал именно то, что я сказал ей, я просто не понимал, что я сказал ей сделать это ... По сути, я вручную генерировал первый токен обновления, но сериализовал его с помощью AccessTokenFormat вместо RefreshTokenFormat. – DennisWelu
У меня была такая же проблема, но я не правильно задавал значение ExpiresUtc –
«error»: «invalid_grant» также может означать, что токен обновления истек. Я обнаружил, что я продлеваю срок в 0 секунд до своих токенов обновления. –