Когда MSAL может обновить токен? - PullRequest
0 голосов
/ 04 октября 2019

Согласно этому сайту , «AcquireTokenSilent способен ... обновлять токен, когда он приближается к истечению (так как кэш токена также содержит токен обновления)», что прекрасно, но чтоограничения на то, когда MSAL разрешено обновлять токен?

Этот вопрос о стековом потоке подразумевает, что иногда сервер отправляет специальный токен обновления, но когда я вызываю App.PCA.AcquireToken ... () он возвращает объект типа AuthenticationResult, у которого нет ни одного члена, названного как Refresh (в нашем приложении Xamarin / C #), так что не похоже, что на самом деле есть отдельный токен, используемый только для выяснения обновления?

Требует ли AcquireTokenSilent () доступ в Интернет? Всегда ли регистрируется на сервере?

1 Ответ

3 голосов
/ 04 октября 2019

AcquireTokenSilent будет искать токен доступа в кеше токена для текущей учетной записи. Если он не найден, он выдаст MsalUiRequiredException:

  • Если такой токен доступа найден и он не близок к истечению срока действия, он вернет этот токен доступа (часть AuthenticationResult). Для этого не требуется доступ в Интернет
  • Если такой токен доступа найден, но срок его действия истек или близок к истечению, AcquireTokenSilent будет использовать токен обновления, связанный с учетной записью в кэше токенов (и не обнаруженный через API)и получите новый токен доступа и обновите токен, сохраните их в кэше и верните токен доступа. Для этого сценария требуется подключение к Интернету

. Существуют тонкие случаи, когда при обновлении токена платформа идентификации Microsoft решает, что требуется MFA, или какое-либо взаимодействие, и в этом случае AcquireTokenSilent можеттакже бросить MsalUiRequiredException. Подробнее см. https://docs.microsoft.com/en-us/azure/active-directory/develop/msal-handling-exceptions#msaluirequiredexception

...