【问题标题】:ADAL.NET - why is AcquireTokenAsync needed when authenticating OnBehalfOf from an API to an API?ADAL.NET - 为什么在从 API 到 API 对 OnBehalfOf 进行身份验证时需要 AcquireTokenAsync?
【发布时间】:2019-02-08 07:00:49
【问题描述】:

使用 ADAL.NET 获取访问令牌的规范模式如下所示:

try
{
 result = await authContext.AcquireTokenSilentAsync(graphResourceId, clientId);
}
catch (AdalException adalException) 
{
 if (adalException.ErrorCode == AdalError.FailedToAcquireTokenSilently || adalException.ErrorCode == AdalError.UserInteractionRequired)
 {
  result = await authContext.AcquireTokenAsync(graphResourceId,
                                               clientCred, 
                                               userAssertion);
 }
} 

假设AcquireTokenSilentAsync 尝试在没有用户交互的情况下检索令牌,而AcquireTokenAsync 提示用户许可。然而......这个函数是在一个试图调用另一个 Web API 的 Web API 中调用的——所以根本没有办法提示用户获得许可。我用哪一个?我需要同时使用两者吗?

【问题讨论】:

    标签: .net azure-active-directory adal


    【解决方案1】:

    通常,您只需使用第二个(使用 userAssertion),因为这就是您在 WebAPI 中的全部内容 - 调用您的客户端用户的传入令牌。请注意,此 API 不会提示用户 - PlatfromParameters 的不同签名。此 API 会将发往此 API 的传入令牌交换为发往此人需要调用的 API 的令牌。

    【讨论】:

    • 好的,很高兴知道 - 所以我可以单独使用 AquireTokenAsync 并且 AuthenticationContext 仍然会使用缓存中的令牌(如果存在)?
    • 您可以查看我关于该主题的文章:joonasw.net/view/azure-ad-on-behalf-of-aspnet-core 如果可用,它应该从缓存中返回一个令牌
    猜你喜欢
    • 2020-12-03
    • 2012-06-13
    • 2020-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-16
    • 2020-04-19
    • 1970-01-01
    相关资源
    最近更新 更多