Сбой Azure ChainedTokenCredential после смены пароля

После смены пароля в Azure не удается выполнить локальную разработку. Я использовал ChainedTokenCredential в течение нескольких недель для аутентификации с помощью ManagedIdentityCredentialв Azure и для локального тестирования моего приложения-функции. Все работало, как и ожидалось. Вот пример кода, который работал и все еще работает в Azure, но не локально.

      def get_client():

    MSI_credential = ManagedIdentityCredential()
    default_credential = DefaultAzureCredential()
    credential_chain = ChainedTokenCredential(MSI_credential, default_credential)

    storageurl = os.environ["STORAGE_ACCOUNT"]

    client = BlobServiceClient(storageurl, credential=credential_chain)
    return client

На прошлой неделе мне пришлось сменить пароль, и с тех пор я получаю следующую ошибку.

      [2021-04-19T15:18:06.931Z] SharedTokenCacheCredential.get_token failed: Azure Active Directory error '(invalid_grant) AADSTS50173: The provided grant has expired due to it being revoked, a fresh auth token is needed. The user might have changed or reset their password. The grant was issued on '2021-02-08T20:05:01.4240000Z' and the TokensValidFrom date (before which tokens are not valid) for this user is '2021-04-15T15:49:33.0000000Z'.
[2021-04-19T15:18:06.963Z] Trace ID: xxx
[2021-04-19T15:18:06.972Z] Correlation ID: xxx
[2021-04-19T15:18:06.974Z] Timestamp: 2021-04-19 15:17:46Z'
[2021-04-19T15:18:06.977Z] DefaultAzureCredential.get_token failed: SharedTokenCacheCredential raised unexpected error "Azure Active Directory error '(invalid_grant) AADSTS50173: The provided grant has expired due to it being revoked, a fresh auth token is needed. The user might have changed or reset their password. The grant was issued on '2021-02-08T20:05:01.4240000Z' and the TokensValidFrom date (before which tokens are not valid) for this user is '2021-04-15T15:49:33.0000000Z'.
[2021-04-19T15:18:07.014Z] Trace ID: xxx
[2021-04-19T15:18:07.040Z] Correlation ID: 
[2021-04-19T15:18:07.046Z] Timestamp: 2021-04-19 15:17:46Z'"
[2021-04-19T15:18:07.061Z] DefaultAzureCredential failed to retrieve a token from the included credentials.
Attempted credentials:
        EnvironmentCredential: EnvironmentCredential authentication unavailable. Environment variables are not fully configured.
        ManagedIdentityCredential: ManagedIdentityCredential authentication unavailable, no managed identity endpoint found.
        SharedTokenCacheCredential: Azure Active Directory error '(invalid_grant) AADSTS50173: The provided grant has expired due to it being revoked, a fresh auth token is needed. The user might have changed or reset their password. The grant was issued on '2021-02-08T20:05:01.4240000Z' and the TokensValidFrom date (before which tokens are not valid) for this user is '2021-04-15T15:49:33.0000000Z'.
[2021-04-19T15:18:07.094Z] Trace ID: xxx
[2021-04-19T15:18:07.097Z] Correlation xxx
[2021-04-19T15:18:07.108Z] Timestamp: 2021-04-19 15:17:46Z'
[2021-04-19T15:18:07.111Z] ChainedTokenCredential.get_token failed: DefaultAzureCredential raised unexpected error "DefaultAzureCredential failed to retrieve a token from the included credentials.
Attempted credentials:
        EnvironmentCredential: EnvironmentCredential authentication unavailable. Environment variables are not fully configured.
        ManagedIdentityCredential: ManagedIdentityCredential authentication unavailable, no managed identity endpoint found.
        SharedTokenCacheCredential: Azure Active Directory error '(invalid_grant) AADSTS50173: The provided grant has expired due to it being revoked, a fresh auth token is needed. The user might have changed or reset their password. The grant was issued on '2021-02-08T20:05:01.4240000Z' and the TokensValidFrom date (before which tokens are not valid) for this user is '2021-04-15T15:49:33.0000000Z'.
[2021-04-19T15:18:07.147Z] Trace ID: xxx
[2021-04-19T15:18:07.181Z] Correlation ID: xxx
[2021-04-19T15:18:07.195Z] Timestamp: 2021-04-19 15:17:46Z'"
[2021-04-19T15:18:07.201Z] ChainedTokenCredential failed to retrieve a token from the included credentials.
Attempted credentials:
        ManagedIdentityCredential: ManagedIdentityCredential authentication unavailable, no managed identity endpoint found.
        DefaultAzureCredential: DefaultAzureCredential failed to retrieve a token from the included credentials.
Attempted credentials:
        EnvironmentCredential: EnvironmentCredential authentication unavailable. Environment variables are not fully configured.
        ManagedIdentityCredential: ManagedIdentityCredential authentication unavailable, no managed identity endpoint found.
        SharedTokenCacheCredential: Azure Active Directory error '(invalid_grant) AADSTS50173: The provided grant has expired due to it being revoked, a fresh auth token is needed. The user might have changed or reset their password. The grant was issued on '2021-02-08T20:05:01.4240000Z' and the TokensValidFrom date (before which tokens are not valid) for this user is '2021-04-15T15:49:33.0000000Z'.
[2021-04-19T15:18:07.241Z] Trace ID: xxx
[2021-04-19T15:18:07.264Z] Correlation ID: xxx
[2021-04-19T15:18:07.303Z] Timestamp: 2021-04-19 15:17:46Z'

Что я пытался решить проблему:

  1. Вход и выход из расширения VSCode Azure
  2. Вход и выход az cli
  3. az account clear
  4. Очистка кеша браузера.
  5. Перезагрузка ПК и VSCode.
  6. Очистка кеша VSCode
    • C:\Users\<user>\AppData\Roaming\Code\Cache
    • C:\Users\<user>\AppData\Roaming\Code\CacheData

Я использую расширение Azure «Присоединение к функциям Python» для запуска отладчика. Я не уверен, как я получаю свои учетные данные. Я считаю, что он хранится локально, потому что я получаю ту же ошибку при запуске отладчика, когда я не вошел в расширение Azure. я думал DefaultAzureCredential использовал бы мой вход в Расширение Azure от меня для проверки подлинности, но я не уверен.

Любая помощь будет оценена по достоинству!

3 ответа

Решение

Проблема была решена с помощью решения @Charles Lowell. У меня возникли проблемы с поиском файла из-за использования fzf.exe (средство нечеткого поиска), и по умолчанию он не просматривает скрытые папки. Удаление C:\Users\<user>\AppData\Local\.IdentityService\msal.cache работал.

Альтернатива, которую я нашел, использовала VisualStudioCodeCredential()вместо . Для аутентификации используется расширение vscode. Я предпочитаю этот метод, но не все разработчики используют VSCode. Я рада получить DefaultAzureCredential за работой.

      def get_client():

    MSI_credential = ManagedIdentityCredential()
    vscode_credential = VisualStudioCodeCredential()
    credential_chain = ChainedTokenCredential(MSI_credential, vscode_credential)

Больше информации о DefaultAzureCredential()можно найти здесь.

Спасибо всем!

После az account clear, тебе надо az login используя свой последний пароль, вы можете войти в лазурный портал.

DefaultAzureCredential основан на клиентской библиотеке Azure Identity . Вы можете пропустить общий кеш с помощью

      default_credential = DefaultAzureCredential(exclude_shared_token_cache_credential=True)

и попробуйте пройти аутентификацию через Azure CLI.

Мне удалось решить проблему, войдя в систему через сообщество Visual Studio 2022.

Инструменты > Параметры... > Аутентификация службы Azure.

После входа в систему через VS аутентификация снова работала как в Rider, так и в CLI.

Другие вопросы по тегам