ADAL - срок действия токена доступа истекает через 1 час, а токен refre sh не возвращается - PullRequest
1 голос
/ 24 февраля 2020

Я создал приложение WF C для передачи sh данных в Dynamics CRM. Для аутентификации с помощью Dynamics CRM я использую пользователя приложения (аутентификация S2S), а в WF C я получаю токен доступа, используя следующий код:

 string ClientId = "********-542e-440b-b718-69f7826ae60a"; // App Id
 string ClientSecret = "*******Ovm4/00jU?tYT.tw5t6a5@@8n";
 string resource = "https://*****.crm8.dynamics.com";
 ClientCredential clientcred = new ClientCredential(ClientId, ClientSecret);
 var result = authenticationContext.AcquireToken(resource, clientcred);

Все работает нормально до 1 часа после этого я Ошибка получения 401 (неавторизованного), поскольку срок действия маркера доступа истек через 1 час.

Теперь Мой вопрос: -

Могу ли я увеличить срок службы токена доступа более чем на 1 час, что соответствует 1 час по умолчанию равен 1 часу?

Используя вышеупомянутый код, почему я получаю только токен доступа, но не получаю refre sh токен? (который мы можем использовать для обновления sh моего токена доступа). Пожалуйста, помогите мне в этом.

1 Ответ

1 голос
/ 24 февраля 2020

Вы не получаете токен refre sh, потому что ADAL обрабатывает их внутренне. И в любом случае он вам не нужен.

Вы можете получить новый токен, снова вызвав AcquireToken:

var result = authenticationContext.AcquireToken(resource, clientcred);

На самом деле, вы можете вызывать AcquireToken перед каждым вызовом HTTP , ADAL выдаст вам токен из своего кэша памяти, если он все еще действителен, и получит новый, если у него его нет.

Хотя, поскольку вы используете поток учетных данных клиента, на самом деле refre * 1011 нет * токен возвращается Потому что такое клиентское приложение не нуждается в этом. В любом случае, у вас есть все учетные данные для получения новых токенов, токен refre sh только излишне усложнит процесс.

...