哪些 AAD 错误代码表示应提示同意?

What AAD error codes indicate consent should be prompted for?

我在 SPA 客户端中使用 adal.js 来登录并获取我的 Web 服务的访问令牌。我们正在使用新权限更新我们的应用程序注册,这将需要用户再次同意。

我想知道 AAD 中的哪一组错误代码表明应该征得同意,而不是采取其他错误处理措施?

令我惊讶的是,我无法 Google 列出 AAD 可能 return 的所有错误代码的完整参考。这些信息是否公开记录?我指的是模式的错误代码,AADSTSxxxxx(即 AADSTS65001 等),它可能是 return 从 oauth2/authorize 端点编辑的。

AADSTS65001 是主要同意错误,表示最终用户需要再次同意。我建议不要查找特定的 AADSTSxxxxxx 错误并让您的应用分支遇到该错误。有时这些会发生变化,将来可能会出现新的错误,表明类似的 "consent needed" 消息。

如果您正在构建单租户应用,一个不错的选择是在您对应用进行所需的资源更新时征得管理员同意。您可以通过单击 Azure 门户中的 Grant Permissions 或使用 prompt=admin_consent 发送身份验证请求并使用管理员帐户登录来执行此操作。

对于多租户,有几个选项取决于应用程序。一种选择是为这样的更新建立管理员同意体验,管理员可以在其中点击一个按钮启动管理员同意请求,然后让管理员登录。

adal.js 即将推出的一项新功能是新的交互式获取令牌调用,我相信这将使开发过程更容易一些。这将允许您在 acquireToken 调用中指定可以显示 UI 的资源,并在需要时征求同意。一旦可用,您的应用程序可以尝试静默 acquireToken 请求,并在失败时尝试此交互式版本。请留意 Github 上的此版本。