是否缓存了 Azure Active Directory 同意书?

Is Azure Active Directory Consent Cached?

我们正在构建一个使用 Azure AD 的本机应用程序。该应用程序需要一些权限(如读取用户配置文件、执行 Azure 服务管理 API 等)。

当用户第一次使用我们的应用程序时,系统会要求他们登录,一旦他们登录,就会看到同意屏幕(他们同意我们的应用程序)。一旦用户同意,他们就可以在他们的 Azure AD 中看到我们的应用程序(在 "Applications" 选项卡下)。到目前为止一切顺利。

现在这个用户所做的是从他们的 Azure AD 中手动删除我们的应用程序(再次通过 "Applications" 选项卡)。根据我们对同意模型的理解,这意味着用户已经取消了对我们应用程序的同意。

现在,当该用户登录到我们的应用程序时,我们期望再次向用户显示同意屏幕(与第一次一样)。然而,实际行为是用户不会看到这样的屏幕,用户只是简单地登录到我们的应用程序。此外,当用户返回到他们的 Azure AD 时,他们不会在同意的应用程序列表中看到我们的应用程序。

所以我的问题是:

  1. Azure AD 是否以某种方式缓存同意?
  2. 如果同意被缓存,这个同意被缓存多长时间?
  3. 如果同意被缓存,我们有没有办法以编程方式或其他方式清除此同意?

如果能深入了解为什么会发生这种情况,我们将不胜感激。

在 Azure Active Directory 中,用户同意注册为用户对象和代表客户端应用程序的服务主体对象之间的 link。

此 link 在 AAD 图表 API 中表示为 OAuth2PermissionGrant

你是这样说的:

Now what this user does is removes our application manually from their Azure AD (again by going under "Applications" tab). Based on our understanding of the consent model, what this means is that the user has removed the consent to our application.

我想澄清一下。您可能知道,在创建新的 AAD 应用程序时,您需要牢记 Application Object and a Service Principal.

之间的区别

非常具体地说,如果您删除代表客户端应用程序的服务委托人,则连接到该服务委托人的所有同意 link 都将被销毁,从而有效地删除同意。如果您只删除应用程序对象,则不能这样说,这可能是您遇到问题的地方 运行。

我解释了 here 撤销对 Azure Active Directory 应用程序的同意所需的最简单步骤。让我知道这是否有帮助。