Как получить токен обновления oauth? - PullRequest
0 голосов
/ 30 ноября 2018

У меня есть веб-приложение, которое использует Oauth и не может повторно использовать authToken из-за ошибки ниже.

{"AADSTS70002: Error validating credentials. AADSTS54005: OAuth2 Authorization 
code was already redeemed, please retry with a new valid code or use an 
existing refresh token.\r\nTrace ID: 30c342a7-f16a-4a05-a4a8- 
c7ee2c722300\r\nCorrelation ID: 3a5c99d1-ca1c-4cd7-bd36- 
cce721bf05b6\r\nTimestamp: 2018-11-21 00:26:18Z"}

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

Я попробовал те из них ниже: https://docs.microsoft.com/en-us/bingads/shopping-content/code-example-authentication-oauth - этот, похоже, не работает и выдает исключение, когда я пытаюсь получить токен доступа или обновить токен.сообщая, что произошла одна или несколько ошибок.

https://auth0.com/docs/api/authentication#authorization-code-pkce- - но не возвращает токен обновления.Может ли это быть потому, что у меня нет code_verifier?Если да, то как мне это получить?

Код авторизации (PKCE) Изображение

Ниже приведен пример кода, который я использую - проблема здесь в том, что я могу толькоиспользуйте его один раз и один раз. Он был восстановлен. Я не могу получить его снова, так как он больше не существует в кэше.

ClientCredential clientcred = new ClientCredential(Constants.ClientId, Constants.AppKey);

 TokenCache TC = new TokenCache();

 AuthenticationContext AC = new AuthenticationContext(Constants.Authority, TC);
 //Set token from authentication result
 AuthenticationResult authenticationResult = await AC.AcquireTokenByAuthorizationCodeAsync(
            Constants.Code,
 new Uri(Constants.postLogoutRedirectUri + "Index"), clientcred);

 return authenticationResult.AccessToken;

1 Ответ

0 голосов
/ 01 декабря 2018

Вам нужно вызвать OAuth2 авторизовать конечную точку с offline_access областью действия, чтобы получить токен обновления.

Вы должны вызывать AcquireTokenByAuthorizationCodeAsync только один раз, когда вы получаете код авторизации и не должны использовать результат. образец объявления Azure

Вам необходимо вызвать AcquireTokenSilently, когда вы хотите получить токен доступа. образец объявления Azure

В этом примере объявления Azure используется реализация TokenCache по идентификатору пользователя.

Запрос на авторизацию Authorize request

Запрос токена Token request

Удачи!

...