我正在开发一个 .NET 应用程序,它可以使用 Graph API 代表用户发送电子邮件。
提示用户对应用程序进行授权;然后使用获取的访问令牌来调用 Graph API。刷新令牌用于在旧访问令牌过期时颁发新的访问令牌,如下所述:https://learn.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-auth-code-flow https://learn.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-auth-code-flow
几个问题/观察:
- 假设用户 John 授权应用程序代表他发送电子邮件。如果管理员从 azure 门户中删除该应用程序,John 授权该应用程序时颁发的访问/刷新令牌仍然有效。
- 如果访问令牌仍然有效,则可以使用它来调用图 API;
- 如果访问令牌已过期,仍然可以使用刷新令牌来请求新的访问令牌
这种行为是故意的吗?
看完之后https://learn.microsoft.com/en-us/azure/active-directory/users-groups-roles/users-revoke-access https://learn.microsoft.com/en-us/azure/active-directory/users-groups-roles/users-revoke-access and https://learn.microsoft.com/en-us/powershell/module/azuread/revoke-azureaduserallrefreshtoken?view=azureps-2.0 https://learn.microsoft.com/en-us/powershell/module/azuread/revoke-azureaduserallrefreshtoken?view=azureadps-2.0似乎简单地从用户中删除应用程序并不会撤销令牌。
- 假设用户 John 授权应用程序代表他发送电子邮件。如果约翰去https://myapplications.microsoft.com https://myapplications.microsoft.com并删除应用程序,他将无法使用刷新令牌来获取新的访问令牌,这是预期的。
但是,我注意到,如果约翰重新授权该应用程序代表他执行操作,该应用程序将不会显示在https://myapplications.microsoft.com https://myapplications.microsoft.com不再了。这种行为似乎有点不一致。用户撤销对应用程序的访问权限的正确方法是什么?
如果用户已授予对应用程序的访问权限,Azure AD 将发出访问令牌 and a 刷新令牌为资源。
访问令牌的生命周期通常约为 1 小时。在其生命周期内,即使应用程序被删除,它仍然可用,但您将无法使用刷新令牌再次获取访问令牌。
如果您需要在访问令牌的生命周期内撤销授权,请参阅: here https://learn.microsoft.com/en-us/azure/active-directory/conditional-access/concept-continuous-access-evaluation and here https://learn.microsoft.com/en-us/powershell/module/azuread/revoke-azureaduserallrefreshtoken?view=azureadps-2.0.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)