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

时间:2018-11-12 09:31:45

标签: azure azure-active-directory azure-msi transient-failure

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

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

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

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

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

1 个答案:

答案 0 :(得分:2)

MSI返回的错误代码已记录在here中。

AzureServiceTokenProvider确实包含HTTP响应不成功的情况下的异常详细信息,因此像404、429、500之类的错误代码将与异常消息一起包含在异常中。吸收的异常是未收到HTTP响应时,例如没有MSI端点时。相关代码为here

MSI文档here中建议使用重试逻辑。我添加了GitHub issue来在App Authentication库中实现此重试逻辑。