.net - ADAL.NET - 为什么在从 API 到 API 对 OnBehalfOf 进行身份验证时需要 AcquireTokenAsync?
问题描述
使用 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 需要调用的令牌。
推荐阅读
- data-structures - 仅使用堆操作的最小堆中的最小叶节点
- r - 使用 R 官员包在 Word 文档中的文本字段和页脚中处理和处理文本
- html - 在 HTML 中居中按钮(水平对齐)
- python - 平均具有行和列标题的文本文件中的列
- android - 如何在 Room 中使用 SQL“NOT IN”运算符
- python - 在 Python 中使用 None 类型的条件语句未按计划进行
- postgresql - 枚举映射的休眠 Envers 错误
- python - PythonOCC(OpenCascade)中平移和旋转的基本误区
- javascript - 在 React 中使用 createPortal 时,在挂载 DOM 之前触发 componentDidMount
- c++ - C++ 中的字数