Microsoft身份-撤消授权

问题描述

我正在开发一个.NET应用程序,该应用程序可以使用Graph API代表用户发送电子邮件

提示用户授权应用程序;然后,将获取的访问令牌用于调用Graph API。当旧的令牌到期时,刷新令牌用于发出新的访问令牌,如此处所述:https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-auth-code-flow

问题/观察:

  1. 假设用户John授权应用程序代表他发送电子邮件。如果管理员从azure门户中删除了该应用程序,则在John授权该应用程序时发出的访问/刷新令牌仍然可以使用。
  • 如果访问令牌仍处于活动状态,则可以使用它来调用图形api;
  • 如果访问令牌已过期,则刷新令牌仍可用于请求新的访问令牌

此行为是故意的吗?

在阅读https://docs.microsoft.com/en-us/azure/active-directory/users-groups-roles/users-revoke-accesshttps://docs.microsoft.com/en-us/powershell/module/azuread/revoke-azureaduserallrefreshtoken?view=azureadps-2.0之后,似乎简单地从用户删除应用并不会撤消令牌。

  1. 假设用户John授权应用程序代表他发送电子邮件。如果John转到https://myapplications.microsoft.com删除了该应用程序,那么他将无法使用刷新令牌来获取新的访问令牌。

但是,我注意到,如果John重新授权该应用程序代表他执行操作,该应用程序将不再显示https://myapplications.microsoft.com上。此行为似乎有点不一致。用户撤消对应用程序的访问权的正确方法是什么?

解决方法

如果用户已授予对应用程序的访问权限,则Azure AD将为该资源颁发访问令牌刷新令牌

访问令牌的生命周期通常约为1小时。在其生命周期中,即使删除了该应用程序,该应用程序仍然可用,但是您将无法使用刷新令牌再次获取访问令牌。

如果您需要在访问令牌的生存期内撤销授权,请参阅: herehere