目标:MasterAPI执行On-Behalf-Of流向DownstreamAPI
演员:
- Azure AD(认证服务器)
- 公共SPA (Client) MasterAPI (Resource Server)
- DownstreamAPI (Resource Server)
:
- 公共SPA客户端使用授权码加PKCE调用Azure
/authorize?scope=api://MasterAPI/access_as_user
并接收ID令牌 - 公共SPA调用Azure
/token
并接收访问令牌 - 公共SPA使用访问令牌 调用MasterAPI
- MasterAPI运行
IDownstreamWebAPI.CallWebApiForUserAsync()
. - 抛出一个异常:条件访问
- 在我的公共SPA中,我将两个作用域添加到MSAL.js中,但它仍然抛出异常。
MasterAPI:
await invoicingWebApi.CallWebApiForUserAsync<object, object>("DownstreamAPI", "",
options =>
{
options.HttpMethod = HttpMethod.Post;
options.RelativePath = $"test";
});
MasterAPI回应:
IDW10502: An MsalUiRequiredException was thrown due to a challenge for the user. See https://aka.ms/ms-id-web/ca_incremental-consent
当租户管理员没有为您想要使用的web API提供管理员许可时,会弹出此错误。因此,租户管理员需要为Web API的范围提供管理许可。