ADFS:使用PromptBehavior.Auto获取令牌

时间:2018-04-13 11:53:38

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

根据PromptBehavior.Auto的{​​{3}},我理解:

  

如果缓存中没有令牌,但用户已知或会话   cookie在用于的Web浏览器控件中可用   互动,对话flashes but disappears immediately

但是,有没有办法完全抑制这个Dialog,因为我第一次调用AcquireTokenAsync并且如果需要时间来返回令牌,则空白对话框不会显示为闪存(如上面的文档中所示) )而是它保持整个时期,直到令牌返回。在后续调用中,它不会发生,因为我已经获取了令牌并且它存在于缓存中。

PromptBehavior = Auto

的情况下,有没有办法完全抑制/隐藏它?

请注意: PromptBehavior = Never不是按照文档

的选项
  

如果您使用PromptBehavior = Never并且该令牌不存在   缓存,或者需要用UI刷新,调用AcquireTokenAsync   将失败,但AdalException类型

的例外

1 个答案:

答案 0 :(得分:1)

您可以先致电AcquireTokenSilentAsync

ADAL.NET中公共客户端应用程序(桌面/移动应用程序)的recommended pattern是:

try
{
 result = await ac.AcquireTokenSilentAsync(resource, clientId);
}
catch (AdalException adalException)
{
 if (adalException.ErrorCode == AdalError.FailedToAcquireTokenSilently
     || adalException.ErrorCode == AdalError.InteractionRequired)
  {
   result = await ac.AcquireTokenAsync(resource, clientId,redirectUri,
                                       new PlatformParameters(PromptBehavior.Auto));
  }
}