使用 C# 登录 Azure AD。获取刷新令牌和访问令牌

2023-12-05

Task:我需要创建一个 WPF 应用程序,它将与 EWS(Exchange Web 服务)一起使用。我也有两个限制:

  • 登录只能进行一次(应该使用刷新令牌重新连接)
  • 它应该支持 2FA

我的解决方案部分:我使用 OAuth 连接到 Azure AD。作为 OAuth 客户端,我使用 Microsoft.Identity.Client。对于第一次登录,我有这样的代码:

var pcaOptions = new PublicClientApplicationOptions
{
    ClientId = *my_client_id*,
    TenantId = *my_tenant*
};
AuthenticationResult authResult = pca.AcquireTokenInteractive(ewsScopes).ExecuteAsync().Result;

这部分代码显示了一个 WPF 窗口,我在其中输入凭据并返回一个结果(AuthenticationResult),其中包含访问令牌。

Problem:AuthenticationResult 没有刷新令牌,因此我无法满足第一个限制。有什么解决办法或者over的办法吗?

附加问题:如何使用 Microsoft.Identity.Client 更新刷新令牌?


MSAL.NET 不公开刷新令牌,出于安全原因:MSAL 使用令牌缓存为您处理刷新令牌。

MSAL 维护令牌缓存并在获取令牌后对其进行缓存。它还能够在令牌接近过期时刷新令牌(如令牌缓存还包含刷新令牌).

您可以通过定期使用来提高应用程序的可用性强制刷新当设置为时,它将在内部获取新的访问令牌true

result = await app.AcquireTokenSilent(scopes, accounts.FirstOrDefault())
             .WithForceRefresh(true)
             .ExecuteAsync();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 C# 登录 Azure AD。获取刷新令牌和访问令牌 的相关文章

  • 以相反的顺序迭代可变参数模板参数

    如果我手动反转传递给它的模板参数的顺序 以下代码将起作用 template
  • C 中的变量定义是什么意思[重复]

    这个问题在这里已经有答案了 你们能告诉我 这在 C 中意味着什么吗 define Privileged Data Privileged Data static int dVariable 编译器对变量进行寻址有特殊意义吗 这只是一个宏Pri
  • 更快的算法来计算有多少数字可以被范围内的特定整数整除

    int a b c d 0 cin gt gt a gt gt b gt gt c for int i a i lt b i if i c 0 d cout lt
  • 通过单个 GPIO 引脚转储闪存

    我正在使用 Infineon 的 XMC4500 Relax Kit 并尝试通过单个 GPIO 引脚提取固件 我非常天真的想法是通过 GPIO 引脚一次转储一位 然后用逻辑分析仪以某种方式 嗅探 数据 伪代码 while word by w
  • 关闭 XDOCUMENT 的实例

    我收到这个错误 该进程无法访问文件 C test Person xml 因为它是 被另一个进程使用 IOException 未处理 保存文件内容后如何关闭 xml 文件的实例 using System using System Collec
  • 如何使用汇编获取BIOS时间?

    我正在从头开始实现一个小型操作系统 用于教育目的 现在 我想使用汇编来获取 BIOS 时间 我对此进行了很多搜索 但找不到任何代码示例来执行此操作 如果有人可以提供任何参考或代码示例或与此相关的任何内容 我将非常感激 See 时钟中断 1a
  • rand() 播种与 time() 问题

    我很难弄清楚如何使用 rand 并使用 Xcode 用 time 为其播种 我想生成 0 到 1 之间的随机十进制数 该代码为我提供了元素 1 和 2 看似随机的数字 但元素 0 始终在 0 077 左右 有什么想法吗 我的代码是 incl
  • C 中的模仿函数重写

    具体来说 函数重写能够调用基本重写方法 这有两部分 一个是预编译的库代码 1 另一个是库的用户代码 2 我在这里实现了一个尽可能最小的经典 Person 和 Employee 示例 非常感谢了解 OOP 概念的铁杆 C 开发人员的回应 我正
  • 将成员函数作为参数传递/c++

    我想用 C 实现一个类b可以通过封装该迭代器类型的成员集进行某种迭代 喜欢 b object for each x do function f so 函数 f会得到每个人的x成员并做任何事情 比方说 void function f x me
  • .net Framework (.net 4.0) 中定义 Base 3 数字的类

    我正在寻找一些可以用来定义 3 基数 三进制数 的类 有什么我可以在 net 框架中使用的东西或者我需要写一些东西吗 谢谢你的帮助 您可以使用解析Convert ToInt32 s base http msdn microsoft com
  • 导出到 CSV 时 Gridview 出现空行

    这个问题是由进一步讨论引发的这个问题 https stackoverflow com questions 6674555 export gridview data into csv file 6674589 noredirect 1 com
  • 在“using”语句中使用各种类型 (C#)

    自从C usingstatements只是try finally dispose 的语法糖 为什么它接受多个对象仅当它们属于同一类型时 我不明白 因为它们需要的只是 IDisposable 如果它们都实现 IDisposable 应该没问题
  • QThread - 使用槽 quit() 退出线程

    我想在线程完成运行时通知对象 但是 我无法让线程正确退出 我有以下代码 处理器 cpp thread new QThread tw new ThreadWorker connect tw SIGNAL updateStatus QStrin
  • 从包含大量文件的目录中检索文件

    我的目录包含近 14 000 000 个 wav 格式的音频样本 所有普通存储 没有子目录 我想循环浏览文件 但是当我使用DirectoryInfo GetFiles 在该文件夹上 整个应用程序冻结了几分钟 可以用另一种方式完成吗 也许读取
  • 如何不在类中实现接口的功能?

    面试时面试官问了我以下问题 但我不知道这个问题的答案是什么 请帮忙 如果我不想 我必须做什么 在我的类中实现一个函数 在接口中声明为 由我班实施 Edited 我正在使用 NET 和 C 如果有人可以提供 C 示例代码示例 那就太好了 Th
  • Dynamics Crm:获取状态代码/状态代码映射的元数据

    在 Dynamics CRM 2011 中 在事件实体上 状态原因 选项集 也称为状态代码 与 状态 选项集 也称为状态代码 相关 例如看这个截图 当我使用 API 检索状态原因选项集时 如下所示 RetrieveAttributeRequ
  • 在 SQL Server 上执行分页的最佳方式是什么?

    我有一个数据库超过200万记录 我需要执行分页以在我的 Web 应用程序上显示 该应用程序每页必须有 10 条记录DataGrid 我已经尝试使用ROW NUMBER 但是这种方式会选择所有 200 万条记录 然后只得到 10 条记录 我也
  • 正在获取“未终止 [] 设置”。 C# 中的错误

    我正在 C 中使用以下正则表达式 Regex find new Regex url
  • 如何使用 ASP.NET Web 表单从代码隐藏中访问更新面板内的文本框、标签

    我在更新面板中定义了一些控件 它们绑定到中继器控件 我需要根据匿名字段隐藏和显示用户名和国家 地区 但问题是我无法以编程方式访问更新面板中定义的控件 我如何访问这些控件 我也在网上查找但找不到很多参考资料 下面是来自aspx页面和 cs页面
  • 通过 cmake 链接作为外部项目包含的 opencv 库[重复]

    这个问题在这里已经有答案了 我对 cmake 比较陌生 经过几天的努力无法弄清楚以下事情 我有一个依赖于 opencv 的项目 它本身就是一个 cmake 项目 我想静态链接 opencv 库 我正在做的是我的项目中有一份 opencv 源

随机推荐

  • 如何在Android中的.csv文件中逐行写入contactname和contactno?

    我想从手机中获取联系人姓名和相应的联系人号码 并将其写入 csv文件 每行将包含整个联系人列表中每个人的联系人姓名和联系电话号码 联系方式怎么写 csv file 我编写了用于显示联系人姓名列的代码 但它仅显示一个联系人 这意味着它会覆盖现
  • 如何将 Map 对象写入文件

    我想从 a 写入文件Map目的 这是我的尝试 try stuMap put student getId student Path file Paths get student txt to create the file Files wri
  • MASM x64 中的跳转表实现?

    我正在尝试使用跳转表在汇编 MASM64 Windows x64 中实现算法 基本思想是 我需要对数据执行 3 种不同类型的操作 这些操作取决于一些变量 但我发现实现大量切换和许多冗长的实现很乏味 PUBLIC superFunc 40 v
  • JTidy java API 将 HTML 转换为 XHTML

    我正在使用 JTidy 从 HTML 转换为 XHTML 但我在我的 XHTML 文件中发现了这个标签 nbsp 我可以阻止它吗 这是我的代码 from html to xhtml try fis new FileInputStream h
  • 如何将 DatagridView 保存在 Xml 中并将 Xml 加载到 datagridView?

    您好 我想将数据从 datagridview 保存并加载到 xml 我的想法是 我可以将我的 datagridview 保存到 xml 中 gt date name xml 然后我可以加载此数据 对于这两个操作我想使用两种方法 gt Sav
  • 如何以编程方式在 C++ 或 Python 中列出 DLL 的依赖项?

    我目前正在使用 Boost Python 为 C 项目编写 Python 接口 问题是 如果缺少 DLL Python 会给我们一条非常无用的错误消息 ImportError DLL 加载失败 找不到指定的模块 根据这个网站不可能显示比这更
  • Prestashop 1.6 获取模块类的实例

    我有一个被重写的类OrderConfirmationControllerCore 我有一个带有类的模块Abra 我需要获取一个实例Abra类在OrderConfirmationControllerCore 我的代码是 class Order
  • PostSharp 参数验证 - 使用 RegularExpressionAttribute 查找前导/尾随空格

    我正在使用 PostSharp 3 1 通过验证属性来验证属性的参数 我想用正则表达式属性执行验证 它接受表示正则表达式的字符串 如果字符串有任何前导或尾随空格 但字符串可能在单词之间包含空格 我想抛出异常 在使用 PostSharp 属性
  • 反序列化 JSON 子文档

    我正在调用 JIRA Rest API 来接收工作日志对象列表 我收到的 JSON 看起来像 startAt 0 maxResults 1 total 1 worklogs self http www example com jira re
  • 有没有办法使用 LINQ 表达式填充集合?

    LINQ 的优点之一是允许您获取与集合相关的信息 而无需手动编写代码来迭代集合 有没有办法使用 LINQ 填充集合 从而避免编写循环 例如 假设我有以下代码 它适用于从 1 到 10 的数字范围 public static void Lin
  • 在 WPF 应用程序中使用 .NET Standard 程序集中的内容文件

    我想将文件嵌入到 NET Standard 程序集中 并在 WPF 应用程序的 XAML 中使用它 如果您将构建操作设置为Resource在其他程序集中使用嵌入文件非常容易 但是您必须使用
  • 在 Angular (v5) 中,如何监听我的应用程序 Redux 状态对象的变化?

    我需要知道如何创建一个监听器 例如我想订阅 AppState 更改 以下是我目前非常基本的服务 我在视图上有一个调度操作 它会增加计数器 一旦计数器改变值 我想在我网站的其他部分检测到这一点 例如例如全局标头 我正在使用 ng2 Redux
  • 将光标设置到 CKEditor 中的特定位置

    有没有办法将光标位置设置为 CKEditor 内的已知索引 我想这样做是因为当我更改编辑器内的 html 时 它会将光标重置到插入元素的开头 这是一个问题 因为我在用户键入时动态更改内容 如果我知道我想将光标设置回编辑器内的已知字符位置 例
  • 尝试获取本周星期一的日期

    我已经实现了一种方法来获取本周星期一的日期 并且我已将星期一指定为本周的第一天 但是 无论我做什么 它都会返回 Sun Mar 24 15 03 07 GMT 2013 我看不出这里有什么问题 有人可以帮忙吗 public static D
  • 使用自定义顺序和包含逗号的值编写 Excel VBA 排序代码

    在 VBA 中 Excel 允许使用 CustomOrder 参数对值进行排序 以选择排序的序列项 不幸的是 项目序列是用逗号分隔的 并且我的排序项目之一包含逗号 例如 我想按第二列中的类别对第一列中的数据进行排序 空中 陆地或海上 类别包
  • Android - 将 URI 转换为棒棒糖上的文件路径

    我目前正在尝试制作一个音频媒体播放器 我目前正在运行棒棒糖 我在设置媒体播放器的数据源时遇到问题 首先 这是我设置数据源的方法 public void playSong player reset Song selSong songs get
  • 绘制调用在 Three.js 中如何工作?

    我有许多可能很长的折线 或很短 顶点数非常不稳定 要显示 所以我正在考虑将它们包装在一堆固定大小 假设有 10000 个顶点 的位置BufferAttribute并发送一份drawcall每条折线 如果多段线跨越 10000 限制边界 我可
  • 使用 Amazon Dynamodb 进行不区分大小写的查询

    在 DynamoDB 中 字符串值区分大小写 在我的应用程序中 用户可以在数据库中搜索配置文件名称 但是 如果他们搜索 alan 则搜索结果中不会返回 Alan 如何允许用户指定不区分大小写的搜索以检索良好的结果 仅供参考 我将 Dynam
  • 如何在 Ruby 中捕获终端箭头键?

    如何捕获终端中的箭头键 而用户不必在箭头键后按 Enter 键 查看 Ruby 控制台库红宝石特米奥斯 and ncurses 红宝石
  • 使用 C# 登录 Azure AD。获取刷新令牌和访问令牌

    Task 我需要创建一个 WPF 应用程序 它将与 EWS Exchange Web 服务 一起使用 我也有两个限制 登录只能进行一次 应该使用刷新令牌重新连接 它应该支持 2FA 我的解决方案部分 我使用 OAuth 连接到 Azure