第 151 号 如何验证 JSON 通知消息是从 Microsoft Graph 服务发送的?
clientState 指定服务在每次通知中发送的 clientState 属性值。最大长度为 128 个字符。客户端可以通过比较随订阅发送的 clientState 属性值和随每份通知接收的 clientState 属性值,检查通知是否来自服务。
注:订阅允许客户端应用程序接收 Microsoft Graph 中数据更改的通知。
议题 3,电子发票
现有环境
应用架构
电子发票由单页应用程序(SPA)和提供发票管理和处理功能的后台网络服务组成。
电子发票将每次开票操作的所有详细信息存储在后台云数据库中。电子发票以 PDF 格式生成发票,生成后用户可从 OneDrive 下载 PDF。每张发票都有一个名为 invoiceid 的唯一标识符。
用户有一个共同的工作流程,即登录电子发票,然后在网络浏览器的多个标签页中打开电子发票,以便同时使用应用程序的不同部分。
安全架构
要求
业务目标
计划中的变更
* 代表当前登录用户将生成的发票通过电子邮件发送给客户。系统生成的任何电子邮件都将包含 invoiceid。
* 在浏览器中执行尽可能多的操作,而无需离开电子发票应用程序。
* 使用微软身份平台管理身份、验证和授权。
* 显示包含特定发票号的所有电子邮件。
技术要求
* 确保电子发票针对 Microsoft 365 执行的所有操作均由用户发起。在应用程序首次尝试代表用户访问 Microsoft 365 数据时,要求用户授权电子发票访问 Microsoft 365 数据。
* 在付款到期日之前向客户发送计划提醒。创建管理用户界面,启用计划提醒。
* 实施 Microsoft Graph 更改通知,以检测到达指定邮箱的供应商电子邮件。
* 实施单点登录(SSO),尽量减少浏览器标签页上的登录提示。
* 使用微软身份平台,确保对后台网络服务的安全访问。
* 确保所有解决方案都采用安全的编码实践。
后台安全计划变更
电子发票的内部逻辑将动态识别是否允许用户调用后台应用程序接口。
SSO JavaScript 脚本
您计划使用以下代码通过 Microsoft Authentication Library (MSAL) 实现 SSO。
访问令牌 JavaScript 脚本
您可以使用以下 JavaScript 代码来获取访问令牌。
更改通知 JSON
Microsoft Graph 服务将发送以下 JSON 消息来检测供应商电子邮件。
发表回复