当您尝试从 Azure Active Directory 获取 token 时,如果在 token 获取过程中发生错误,则会引发异常类型。
该异常称为 AdalException ms docs link here
我正在寻找名为ErrorCode的属性ms docs link here
但是他们称之为“错误代码”,它是一个带有可能值的字符串,例如:
- “暂时不可用”
- “user_interaction_required”
- 等等...
从查看程序集得知
// Parameters:
// errorCode:
// The error code returned by the service or generated by client. This is the code
// you can rely on for exception handling.
你能给我指出一个方向,我可以从中获得所有可能的值吗?或者它的值(value)只是信息性的、唯一的或随机的?
我想做的是有一个不同的逻辑,所以假设它暂时不可用,是否重试?如果是其他事情,请采取相应行动...
伪代码:
catch (AdalException ex)
{
if (ex.ErrorCode == "temporarily_unavailable")
{
retry = true;
retryCount++;
Thread.Sleep(3000);
}
else if (ex.ErrorCode == "foo")
// rest of the code omitted for brevity...
}
最佳答案
Exceptions in ADAL.NET wiki涵盖了很多这个细节。
要处理的最重要的错误/异常是 AdalSilentTokenAcquistionException
,其中缓存中的 token 不再有效,需要以交互方式刷新。
我强烈建议为 interaction_required
构建一个强大的错误处理程序(在 ADAL.NET 中,这是一个 AdalClaimsChallengeException
,它可能因条件访问而发生需要对 AcquireTokenSilent()
方法进行额外授权的策略。在这种情况下,如果您可以提示用户,则只需以交互方式重复失败的请求即可。如果您的应用无法显示交互,则您可以捕获错误中的claims
参数并将其发送回客户端重新授权。
关于c# - 如何查找所有可能的 AdalException.ErrorCode 字符串属性值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52724552/