Токен доступа веб-приложения Azure, полученный через AadTokenProvider, истечет через час, и новый токен не будет получен

#azure-active-directory #azure-functions #access-token #azure-web-app-service #azure-authentication

#azure-active-directory #azure-функции #токен доступа #azure-web-app-service #azure-аутентификация

Вопрос:

Я получаю токен доступа со следующим кодом.

 protected async getAccessToken(): Promise<string> {  
         return await this.context.aadTokenProviderFactory
             .getTokenProvider()
             .then((tokenProvider: AadTokenProvider): Promise<string> => {
                 return tokenProvider.getToken(Config.resourceEndpoint, false);
             })
             .catch(error => {
                 console.error("getAccessToken", error);
                 return null;
             });
     }
  

Токен доступа, получаемый каждый раз, один и тот же, но срок действия этого токена истечет через один час, из-за чего я не смогу получить доступ к webapi в веб-приложении Azure. Как я могу решить эту проблему? Кто-нибудь сталкивался с подобной проблемой?

Комментарии:

1. Это во внешнем коде? И вы получаете сообщение об ошибке в журнале через час?

2. Это код react в веб-части SPFx. azure app api вернет ошибку 401 после истечения срока действия токена.

3. Обычно MSAL (если он используется здесь) должен автоматически обновлять токен через неявный поток (скрытый iframe). Таким образом, он будет возвращать тот же токен в течение примерно 55 минут, а затем получит новый токен и вернет его. Вы всегда запрашиваете новый токен из этого?

4. Он использовал adal.js в AadTokenProvider. Через 55 минут вместо нового токена возвращается старый токен.

5. Когда я его реализовывал, я ссылался на следующую статью: learn.microsoft.com/en-us/sharepoint/dev/spfx/web-parts /…

Ответ №1:

Если вы вызываете tokenProvider.getToken(Config.resourceEndpoint, false) каждый раз, он всегда выдает вам рабочий токен доступа, т. Е. Он внутренне обновляет токен через час / всякий раз, когда истекает срок его действия, и возвращает вам. Вам не нужно заботиться об этом в своем коде.

Комментарии:

1. В официальном документе также сказано то же самое, но я не получил новый токен.

2. Когда я его реализовывал, я ссылался на следующую статью: learn.microsoft.com/en-us/sharepoint/dev/spfx/web-parts /…

3. Рекомендуется использовать библиотеки MSAL, написанные экспертами в области протокола, которые следуют методологии жизненного цикла разработки безопасности (SDL). ( github.com/AzureAD/microsoft-authentication-library-for-js )