【问题标题】:How to find the all possible AdalException.ErrorCode string property values?如何找到所有可能的 AdalException.ErrorCode 字符串属性值?
【发布时间】:2018-10-10 12:04:50
【问题描述】:

当您尝试从 Azure Active Directory 获取令牌时,如果在获取令牌期间发生错误,则会引发异常类型。

异常被称为 AdalException ms docs link here

我在寻找它的属性 ErrorCode ms docs link here

然而,他们称之为“错误代码”,它是一个字符串,具有可能的值,例如:

  • temporarily_unavailable
  • 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.

您能否指出我可以从中获取所有可能值的方向?还是它的价值只是信息性的、独特的或随机的?

我想做的是有一个不同的逻辑,所以假设它暂时不可用,是否重试?如果是其他事情,则采​​取相应的行动……

伪代码:

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...
}

【问题讨论】:

    标签: c# azure exception azure-active-directory adal


    【解决方案1】:

    Exceptions in ADAL.NET wiki 涵盖了很多此类细节。

    要处理的最重要的错误/异常是AdalSilentTokenAcquistionException,其中缓存中的令牌不再有效,需要以交互方式刷新。

    另一个例外我强烈建议为interaction_required 构建一个强大的错误处理程序(在 ADAL.NET 中,这是一个AdalClaimsChallengeException,这可能是由于条件访问策略需要对AcquireTokenSilent() 方法进行额外授权而发生的。这种情况下,如果能提示用户,只需要交互重复失败的请求即可。客户端重新授权。

    【讨论】:

    • 干杯@丹尼尔!我将您的问题标记为答案,因为您不仅回答了,而且还帮助我意识到我的问题并不是那么直截了当。你写的提示对清理事情很有帮助!
    • 太棒了!如果您有任何其他问题,请告诉我,祝您编码愉快!
    【解决方案2】:

    https://docs.microsoft.com/en-us/dotnet/api/microsoft.identitymodel.clients.activedirectory.adalerror?view=azure-dotnet

    在左侧层次结构的此链接下,点击 AdalError>Fields 的下拉菜单,它应该会显示所有可能性。

    【讨论】:

    • 非常感谢@RippStudwell!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-04
    • 2015-06-18
    • 1970-01-01
    • 1970-01-01
    • 2020-07-01
    相关资源
    最近更新 更多