microsoft-graph-api - Bot 框架不返回 JWT
问题描述
我正在为 Microsoft Teams 构建一个应用程序,该应用程序要求用户在机器人对话框或消息扩展中登录。整个登录过程运行良好。我正在通过检索令牌BotFrameworkAdapter.getUserToken()
,如果没有可用的令牌,将提示用户基于BotFrameworkAdapter.getSignInLink()
.
通常,令牌是 JWT。这使我能够解码声明并验证它是否包含当前使用该应用程序所需的所有范围。如果将来我要添加 Graph API 权限(例如,对于新功能),我可以提示用户再次登录,这样应用程序就不会因为已使用较少权限登录的用户而中断。
从最近开始,越来越多的代币不再以普通 JWT 的形式发行。相反,它们看起来类似于Graph API 文档中的示例:
EwAoA8l6BAAU7p9QDpi/D7xJLwsTgCg3TskyTaQAAXu71AU9f4aS4rOK5xoO/SU5HZKSXtCsDe0Pj7uSc5Ug008qTI+a9M1tBeKoTs7tHzhJNSKgk7pm5e8d3oGWXX5shyOG3cKSqgfwuNDnmmPDNDivwmi9kmKqWIC9OQRf8InpYXH7NdUYNwN+jljffvNTewdZz42VPrvqoMH7hSxiG7A1h8leOv4F3Ek/oeJX6U8nnL9nJ5pHLVuPWD0aNnTPTJD8Y4oQTp5zLhDIIfaJCaGcQperULVF7K6yX8MhHxIBwek418rKIp11om0SWBXOYSGOM0rNNN59qNiKwLNK+MPUf7ObcRBN5I5vg8jB7IMoz66jrNmT2uiWCyI8MmYDZgAACPoaZ9REyqke+AE1/x1ZX0w7OamUexKF8YGZiw+cDpT/BP1GsONnwI4a8M7HsBtDgZPRd6/Hfqlq3HE2xLuhYX8bAc1MUr0gP9KuH6HDQNlIV4KaRZWxyRo1wmKHOF5G5wTHrtxg8tnXylMc1PKOtaXIU4JJZ1l4x/7FwhPmg9M86PBPWr5zwUj2CVXC7wWlL/6M89Mlh8yXESMO3AIuAmEMKjqauPrgi9hAdI2oqnLZWCRL9gcHBida1y0DTXQhcwMv1ORrk65VFHtVgYAegrxu3NDoJiDyVaPZxDwTYRGjPII3va8GALAMVy5xou2ikzRvJjW7Gm3XoaqJCTCExN4m5i/Dqc81Gr4uT7OaeypYTUjnwCh7aMhsOTDJehefzjXhlkn//2eik+NivKx/BTJBEdT6MR97Wh/ns/VcK7QTmbjwbU2cwLngT7Ylq+uzhx54R9JMaSLhnw+/nIrcVkG77Hi3neShKeZmnl5DC9PuwIbtNvVge3Q+V0ws2zsL3z7ndz4tTMYFdvR/XbrnbEErTDLWrV6Lc3JHQMs0bYUyTBg5dThwCiuZ1evaT6BlMMLuSCVxdBGzXTBcvGwihFzZbyNoX+52DS5x+RbIEvd6KWOpQ6Ni+1GAawHDdNUiQTQFXRxLSHfc9fh7hE4qcD7PqHGsykYj7A0XqHCjbKKgWSkcAg==
尽管这看起来像 Base64 编码的数据,甚至jwt
在文档中的代码段上方都有说明,但这显然不是普通的 JWT。老实说,我不太确定它是什么,但是,我认为它是 JWS 或用 nonce 编码的 JWT。
我在想我可能应该将此令牌视为不透明的,但是,因为登录(和登录链接生成)隐藏在机器人框架后面,我看不到另一个向已部署的应用程序添加权限的机会, ia 验证访问令牌是否提供所需的权限。由于我的应用程序还会在以后代表用户执行操作,因此在我收到来自 Graph API 的 403er 响应后提示登录也是不可行的。
- 有没有办法解码这些类型的令牌,或者确保我的应用程序只接收可解码的 JWT?
- 如果没有,是否有验证访问令牌权限(范围)的替代方法?
解决方案
推荐阅读
- java - 回收站视图混合了其项目的内容
- r - 许多变量的频率表,包括百分比并按组分隔
- reporting-services - 是否可以使用 SSRS 创建电话目录/提供商目录类型的 pdf 报告?
- c# - 如何将内容添加到运行空间 C# 中现有的远程 yaml 文件
- reactjs - 在 React 组件的 HTML 元素中添加属性
- sql-server - 无法重新创建的违反 PRIMARY KEY 约束的错误
- artificial-intelligence - 从语音进行运动检测
- python - 如何在 pandas 中添加 Block 列,使 Trials[1,2,3] 分组为 1,2,3,4..等等?
- opencv - 在 Meson 中添加本地依赖项(openCV)的正确方法是什么?
- c# - 如何使用 IComparer 实现自定义排序
在 C# 中