Microsoft 身份 - 撤销授权

2024-05-24

我正在开发一个 .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

几个问题/观察:

  1. 假设用户 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似乎简单地从用户中删除应用程序并不会撤销令牌。

  1. 假设用户 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(使用前将#替换为@)

Microsoft 身份 - 撤销授权 的相关文章

  • BASIC 中的 C 语言中的 PeekInt、PokeInt、Peek、Poke 等效项

    我想知道该命令的等效项是什么Peek and Poke 基本和其他变体 用 C 语言 类似PeekInt PokeInt 整数 涉及内存条的东西 我知道在 C 语言中有很多方法可以做到这一点 我正在尝试将基本程序移植到 C 语言 这只是使用
  • 在 xaml 中编写嵌套类型时出现设计时错误

    我创建了一个用户控件 它接受枚举类型并将该枚举的值分配给该用户控件中的 ComboBox 控件 很简单 我在数据模板中使用此用户控件 当出现嵌套类型时 问题就来了 我使用这个符号来指定 EnumType x Type myNamespace
  • 如何在 Cassandra 中存储无符号整数?

    我通过 Datastax 驱动程序在 Cassandra 中存储一些数据 并且需要存储无符号 16 位和 32 位整数 对于无符号 16 位整数 我可以轻松地将它们存储为有符号 32 位整数 并根据需要进行转换 然而 对于无符号 64 位整
  • 如何在 C++ 中标记字符串?

    Java有一个方便的分割方法 String str The quick brown fox String results str split 在 C 中是否有一种简单的方法可以做到这一点 The 增强分词器 http www boost o
  • 用于 FTP 的文件系统观察器

    我怎样才能实现FileSystemWatcherFTP 位置 在 C 中 这个想法是 每当 FTP 位置添加任何内容时 我都希望将其复制到我的本地计算机 任何想法都会有所帮助 这是我之前问题的后续使用 NET 进行选择性 FTP 下载 ht
  • 需要帮助优化算法 - 两百万以下所有素数的总和

    我正在尝试做一个欧拉计划 http projecteuler net问题 我正在寻找 2 000 000 以下所有素数的总和 这就是我所拥有的 int main int argc char argv unsigned long int su
  • 重载 (c)begin/(c)end

    我试图超载 c begin c end类的函数 以便能够调用 C 11 基于范围的 for 循环 它在大多数情况下都有效 但我无法理解和解决其中一个问题 for auto const point fProjectData gt getPoi
  • ASP.NET Core 3.1登录后如何获取用户信息

    我试图在登录 ASP NET Core 3 1 后获取用户信息 如姓名 电子邮件 id 等信息 这是我在登录操作中的代码 var claims new List
  • 使用 C# 中的 CsvHelper 将不同文化的 csv 解析为十进制

    C 中 CsvHelper 解析小数的问题 我创建了一个从 byte 而不是文件获取 csv 文件的类 并且它工作正常 public static List
  • WcfSvcHost 的跨域异常

    对于另一个跨域问题 我深表歉意 我一整天都在与这个问题作斗争 现在已经到了沸腾的地步 我有一个 Silverlight 应用程序项目 SLApp1 一个用于托管 Silverlight SLApp1 Web 的 Web 项目和 WCF 项目
  • C# - 当代表执行异步任务时,我仍然需要 System.Threading 吗?

    由于我可以使用委托执行异步操作 我怀疑在我的应用程序中使用 System Threading 的机会很小 是否存在我无法避免 System Threading 的基本情况 只是我正处于学习阶段 例子 class Program public
  • 两个类可以使用 C++ 互相查看吗?

    所以我有一个 A 类 我想在其中调用一些 B 类函数 所以我包括 b h 但是 在 B 类中 我想调用 A 类函数 如果我包含 a h 它最终会陷入无限循环 对吗 我能做什么呢 仅将成员函数声明放在头文件 h 中 并将成员函数定义放在实现文
  • 复制目录下所有文件

    如何将一个目录中的所有内容复制到另一个目录而不循环遍历每个文件 你不能 两者都不Directory http msdn microsoft com en us library system io directory aspx nor Dir
  • 编译时展开 for 循环内的模板参数?

    维基百科 here http en wikipedia org wiki Template metaprogramming Compile time code optimization 给出了 for 循环的编译时展开 我想知道我们是否可以
  • C# 中的 IPC 机制 - 用法和最佳实践

    不久前我在 Win32 代码中使用了 IPC 临界区 事件和信号量 NET环境下场景如何 是否有任何教程解释所有可用选项以及何时使用以及为什么 微软最近在IPC方面的东西是Windows 通信基础 http en wikipedia org
  • C++ 继承的内存布局

    如果我有两个类 一个类继承另一个类 并且子类仅包含函数 那么这两个类的内存布局是否相同 e g class Base int a b c class Derived public Base only functions 我读过编译器无法对数
  • 使用特定参数从 SQL 数据库填充组合框

    我在使用参数从 sql server 获取特定值时遇到问题 任何人都可以解释一下为什么它在 winfom 上工作但在 wpf 上不起作用以及我如何修复它 我的代码 private void UpdateItems COMBOBOX1 Ite
  • 指针和内存范围

    我已经用 C 语言编程有一段时间了 但对 C 语言还是很陌生 有时我对 C 处理内存的方式感到困惑 考虑以下有效的 C 代码片段 const char string void where is this pointer variable l
  • Mono 应用程序在非阻塞套接字发送时冻结

    我在 debian 9 上的 mono 下运行一个服务器应用程序 大约有 1000 2000 个客户端连接 并且应用程序经常冻结 CPU 使用率达到 100 我执行 kill QUIT pid 来获取线程堆栈转储 但它总是卡在这个位置
  • 如何确定 CultureInfo 实例是否支持拉丁字符

    是否可以确定是否CultureInfo http msdn microsoft com en us library system globalization cultureinfo aspx我正在使用的实例是否基于拉丁字符集 我相信你可以使

随机推荐

  • Scala 模式匹配与 Option[Any] 的混淆

    我有以下 Scala 代码 import scala actors Actor object Alice extends Actor this start def act loop react case Hello gt sender Hi
  • 按值对 geom_bar ggplot2 中的条形重新排序

    我正在尝试制作一个条形图 其中的图是从miRNA与最高的value to the miRNA与最低的 为什么我的代码不起作用 gt head corr m miRNA variable value 1 mmu miR 532 3p pos
  • NuGet 和可移植类库 - 包不针对任何框架

    我已经使用 NuGet 来管理内部创建的程序集几个月了 而且它运行得很好 我最近 发现 了可移植类库 这也很棒 直到安装软件包为止 假设我有一个针对 Windows 应用商店应用程序的 NET 4 5 SL5 和 NET 的 PCL 我跑n
  • 应用程序终止和设备重启后 PushKit 通知未到达

    借助 PushKit 我的 iOS 应用程序即使已关闭也能成功接收 VoIP 推送通知 失败时只有一个条件 如果我通过标准任务切换器刷出 终止 我的应用程序并重新启动我的设备 起初 我在重新启动设备后就遇到了这个问题 如这个问题所述 排除启
  • CLOCKS_PER_SEC 与 std::clock() 的结果不匹配

    我正在使用以下短程序来测试std clock include
  • Knockoutjs foreach 自定义绑定处理程序与 afterAdd

    我想构建一个自定义的绑定处理程序 ko bindingHandlers foreachWithHighlight 在afterAdd时具有高亮效果 来自文档 http knockoutjs com documentation foreach
  • 使用 HTML 文本预填充 Gmail 撰写屏幕

    我发现要打开 Gmail 撰写屏幕 您必须登录并打开以下链接 替换变量填充撰写表单上的相应位置 但是 如果我想输入正文多行文本或换行符 即使我对它进行 urlencode 它也不起作用 这里有什么想法吗 检查您的 UrlEncode 方法是
  • 类型错误:$(...).dialog 不是函数

    我正在尝试将基本的 CMS 集成到我的网站中 经过三天的努力 我仍然遇到这个问题 我已经厌倦了我所知道的一切 并做了一些研究 发现了很少的答案 但没有一个真正解决了问题 我使用 Firebug 检查错误和错误 显示的错误是 TypeErro
  • 单击标记时 agm-marker iconUrl 发生变化

    我试图在单击标记时更改其 iconUrl 我正在使用有角度的谷歌地图 iconUrl 我使用本地资产文件夹而不是服务 API 进行设置
  • 错误:没有这样的属性:类的manifestPlaceholders:com.android.build.gradle.management.ProductFlavor

    I use gradle experimental 0 4 0 我想在我的项目中使用 onesignal sdk 当我尝试使用此处示例中提到的代码构建项目时 我收到此错误 错误 没有这样的属性 类的manifestPlaceholders
  • 安卓市场API

    有谁知道Android市场是否有一个API 可以自动提交新应用程序 而无需手动填写市场表格 不 抱歉 没有程序化的方式来提交市场列表 据推测 这是一种反垃圾邮件发送者措施
  • 我如何(或者应该?)从 Grails 中的 SiteMesh 模板 (views/layouts/main.gsp) 访问服务层?

    我需要在我正在构建的网站的页脚中创建一个顶部列表 页脚是在默认的 SiteMesh 布局模板中创建的 views layouts main gsp 为了创建顶部列表 需要访问数据库 因此我将创建顶部列表所需的所有逻辑封装在服务类中 serv
  • 使用 AAACertificateServices 证书的域示例

    如何找到根证书为的域AAA证书服务 https support sectigo com Com KnowledgeDetailPage Id kA03l00000117cL 请注意 这是 Comodo 证书 为了准备一个其证书即将更改的依赖
  • ExpressJS 后端将请求放入队列

    我有客户端发送要由服务器执行的任务 但这些请求应该以类似队列的方式处理 知道我该怎么做吗 谢谢 express Router post tasks function req res This is the task to perform W
  • Android 上谷歌地图的缩放事件

    我们正在构建一个使用 Android 版谷歌地图 API 的应用程序 我有我的 MapController 和 MapView 并且我使用以下方法启用内置缩放控件 mapView setBuiltInZoomControls true 我现
  • Yii urlManager URL 中的语言

    我正在尝试使用以下语法向 url 添加语言 http www example com en site page view about http www example com en site page view about 到目前为止 我所
  • 如何将 application.properties 转换为地图的 application.yml

    我试过了 还是不行 请问我哪里出错了 application properties 工作正常 document contact name joe email email protected cdn cgi l email protectio
  • 更改 pyttsx3 语言

    当尝试使用 pyttsx3 时 我只能使用英语语音 我也希望能够使用荷兰语 我已经在 Windows 设置菜单中安装了文本转语音语言包 但我仍然只能使用默认的英文语音 我怎样才能解决这个问题 如果您想更改语言 您需要更改为支持您的语言的另一
  • 使用 writeLines 将变量写入文件

    我发现此链接对于理解如何将行写入文件非常有帮助 将文本行写入 R 中的文件 https stackoverflow com questions 2470248 write lines of text to a file in r 不幸的是
  • Microsoft 身份 - 撤销授权

    我正在开发一个 NET 应用程序 它可以使用 Graph API 代表用户发送电子邮件 提示用户对应用程序进行授权 然后使用获取的访问令牌来调用 Graph API 刷新令牌用于在旧访问令牌过期时颁发新的访问令牌 如下所述 https le