当我尝试通过本地计算机访问Key Vault时,出现以下错误
DefaultAzureCredential()
我正在运行以下两行,但始终出现错误。
client = SecretClient(vault_url=<URL>, credential=DefaultAzureCredential())
secret = client.get_secret(<SECRET NAME>).value
azure.core.exceptions.ClientAuthenticationError: 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: SharedTokenCacheCredential authentication unavailable. No accounts were found in the cache.
VisualStudioCodeCredential: Azure Active Directory error '(invalid_grant) AADSTS700082: The refresh token has expired due to inactivity. The token was issued on 2020-06-07T03:58:48.4708462Z and was inactive for 90.00:00:00.
我尝试通过以下方式登录Azure
az login
但这不会刷新凭据。
编辑: 我已经尝试了documentation中的其他一些配置。看起来奇怪的是Azure CLI凭据的工作原理,因为这似乎是由默认凭据处理的方案之一。
答案 0 :(得分:2)
如果您使用az login
访问Key Vault,则AzureCliCredential()
和DefaultAzureCredential()
在理论上都可以正常工作。但是该错误显示在您的问题中的VisualStudioCodeCredential()上。
VisualStudioCodeCredential::如果用户已登录Visual Studio Code Azure帐户扩展,则DefaultAzureCredential将作为该用户进行身份验证。
DefaultAzureCredential
尝试通过以下机制以此顺序进行身份验证,并在成功通过后停止:
因此,您需要使用AzureCliCredential()
或设置exclude_visual_studio_code_credential=true
来确保跳过VisualStudioCode。
有关Azure身份的更多详细信息,请参见here。
答案 1 :(得分:0)
如果您希望它与 DefaultAzureCredential() 一起使用,则需要以下内容:-
完成上述操作后,您需要设置以下环境变量:-
要查看 Windows 上的所有环境变量,请打开命令提示符键入命令“set”并按 Enter。
要在 windows 上设置环境变量,例如您想设置 AZURE_CLIENT_ID 变量的值为 jbfdshfbsdfbdsbdgbdjgbdfjbdfj,打开命令提示符键入命令“setx AZURE_CLIENT_ID jbfdshfbsdfbdbdf”和输入
在您重新启动命令提示符之前,它不会显示更新的内容。
然后在您使用 DefaultAzureCredentials() 的地方重新启动 Visual Studio/ vs 代码