Azure MSI 身份验证的瞬态错误处理

Transient error handling for Azure MSI authentication

托管服务身份 (MSI) 身份验证是否存在短暂且值得重试的错误?

通读实现,我可以看到 HttpRequestException 和 Exception 被框架吸收并作为 AzureServiceTokenProviderException 重新抛出,没有内部异常。

https://github.com/Azure/azure-sdk-for-net/blob/25adfede2b99391c29b5913fc289ff9511c9b26d/src/SdkCommon/AppAuthentication/Azure.Services.AppAuthentication/TokenProviders/MsiAccessTokenProvider.cs

我想知道(如果可能出现任何暂时性错误),我是否需要检查异常消息以提取消息中嵌入的 http 状态代码并重新抛出一个例如我自己的 AzureServiceTokenProviderTransientException 在我的重试逻辑中捕获它。

我最初的问题是 MSI 身份验证是否有任何已知的暂时性异常,其次是否有任何内置的重试逻辑或推荐做法?

记录了 MSI returns 的错误代码 here

A​​zureServiceTokenProvider 确实包含 HTTP 响应不成功的情况的异常详细信息,因此异常中将包含 404、429、500 等错误代码以及异常消息。吸收的异常是在未收到 HTTP 响应时,例如当没有 MSI 端点时。相关代码为here.

MSI 文档 here. I have added a GitHub issue 中推荐了一种重试逻辑,以在 App Authentication 库中实现此重试逻辑。