我有一个使用融合应用程序注册的应用程序。与此类应用程序一样,当用户访问该站点时,会将其重定向到Azure AD(AAD)以进行登录。如果他们尚未同意这些权限,则会向他们显示同意的屏幕权限(包括Graph API委派的权限)。
一旦他们接受并重定向回网站,应用程序立即兑换令牌以调用Graph API。对于少数用户,当应用程序尝试兑换令牌时会抛出异常。这是一个Microsoft.Identity.Client.MsalUiRequiredException
例外。基于我所读到的,听起来AAD不相信用户已经同意,但他们必须为了达到这个目的。该站点始终请求相同的权限(它们不是动态设置的)。如果用户等待几分钟并再次尝试,一切正常。
以下是我遗漏了敏感信息的错误消息:
未处理的远程故障.AADSTS65001:用户或管理员拥有 未同意使用ID为“{guid}”的应用程序名为“{app 名称}'。发送此用户的交互式授权请求 资源。
我觉得这可能是用户同意的竞争条件,但在同意已跨区域复制之前,兑换令牌的请求将路由到尚未知晓同意的区域,因此它会抛出前面提到的例外。
我只是在用户初次登录时才会看到这种情况发生在他们同意这些权限时。
还有其他人经历过这个吗?更好的是,还有其他人找到了解决方法吗?