2

托管服务身份 (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 身份验证是否存在任何已知的瞬时异常,其次是否有任何内置的重试逻辑或推荐做法?

4

1 回答 1

3

此处记录了 MSI 返回的错误代码。

AzureServiceTokenProvider 确实包含 HTTP 响应不成功的异常详细信息,因此 404、429、500 等错误代码将与异常消息一起包含在异常中。被吸收的例外是没有收到 HTTP 响应的时候,例如没有 MSI 端点的时候。相关代码在这里

此处的 MSI 文档中推荐了重试逻辑。我添加了一个GitHub 问题以在 App Authentication 库中实现此重试逻辑。

于 2018-11-12T20:29:54.783 回答