2016-08-18 9 views
0

Как и многие люди, я использовал статью Taiser Joudah для создания моего агента токенов обновления (а также его другую статью для создания токена доступа). Для меня странно, что он отлично работает на моем локальном сервере, но не удается, когда я переведу его на другой сервер. Оба сервера Auth и Resource - это один и тот же сервер (фактически это приложение). Не знаю, какая разница на другом сервере. Я проследил SQL, и он выполняет получение и удаление токена, поэтому я знаю, что он выполняет код, но обновление возвращает invalid_grant каждый раз, и пользователь выходит из системы.OAuth Refresh token возвращает invalid_grant

ответ

0

Это единственное место, где я вижу в этой статье, где invalid_grant возвращается:

using (AuthRepository _repo = new AuthRepository()) 
{ 
    IdentityUser user = await _repo.FindUser(context.UserName, context.Password); 

    if (user == null) 
    { 
     context.SetError("invalid_grant", "The user name or password is incorrect."); 
     return; 
    } 
} 

Вы имя пользователя/пароль, пара, которая существует на нелокальном сервере?

Если локальный и не локальный сервер не разделяют ту же БД:

  • Вы можете использовать недопустимый маркер обновления, или он просрочен или отозван
  • Клиентские учетные данные, используемые может не совпадать клиент токен обновления был выпущен

Это также может быть URL-адрес перенаправления, отличный от локального сервера и нелокального сервера.

invalid_grant 
    The provided authorization grant (e.g., authorization 
    code, resource owner credentials) or refresh token is 
    invalid, expired, revoked, does not match the redirection 
    URI used in the authorization request, or was issued to 
    another client. 

https://tools.ietf.org/html/rfc6749#section-5.2

+0

У меня есть один и тот же invalid_grant код шоу, но это в методе GrantOwnerResourceCredentials используется для первоначального входа в систему. Что касается причин invalid_grant из спецификации, я не вижу, где бы они ни применились. Параметры токена обновления, такие как истечение и/или переадресация URI (который не указан, поскольку это не является сторонней реализацией поставщика удостоверений) не изменяются и определенно не выдаются другому клиенту и не были отменены ранее. – HisDivineShadow

+0

@HisDivineShadow, чтобы ваш локальный и нелокальный сервер имел один и тот же DB (ы)? Кроме того, есть шанс на какое-то время? – neverendingqs

+0

Нет, локальные и dev-экземпляры используют собственную БД (на разных серверах БД). В какое время может возникнуть перекос, когда токен доступа и токен обновления будут генерироваться на том же сервере в одном приложении? – HisDivineShadow

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