ADAL.NET-为什么从API到API验证OnBehalfOf时需要AcquireTokenAsync?

ADAL.NET-为什么从API到API验证OnBehalfOf时需要AcquireTokenAsync?,.net,azure-active-directory,adal,.net,Azure Active Directory,Adal,使用ADAL.NET获取访问令牌的规范模式如下所示: try { result = await authContext.AcquireTokenSilentAsync(graphResourceId, clientId); } catch (AdalException adalException) { if (adalException.ErrorCode == AdalError.FailedToAcquireTokenSilently || adalException.ErrorCod

使用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中调用的,因此根本没有办法提示用户获得权限。我用哪一个?我需要同时使用这两个吗?

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

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

好的,很高兴知道-因此我可以单独使用
AquireTokenAsync
,并且
AuthenticationContext
仍将查看缓存中是否存在该令牌?您可以查看我的文章:它应该如果可用,从缓存中返回令牌OK这很好知道-这样我就可以单独使用
AquireTokenAsync
,并且
AuthenticationContext
仍会在缓存中查找并使用令牌(如果存在)?您可以查看我的文章主题:如果可用,它应该从缓存中返回令牌