- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在非交互式服务中使用 msal-node
,我如何授权为启用 MFA 的用户一次并且从不(或很少)必须再次授权为该用户?特别是在向合作伙伴中心 API 发出请求时。
我一直在尝试在 NodeJS 中创建一个与 Microsoft 合作伙伴中心 API 交互的后端服务(即守护进程)。但是,如果没有持续的用户交互,我找不到官方支持的方法来执行此操作。
基于most documentation我可以发现,没有任何用户交互的服务意味着使用“客户端凭据”流程。这对于其他 Azure API 非常有用,但在合作伙伴中心 API 中似乎不起作用,尽管 the docs说。
什么有效,以及我被迫做的,是以用户身份登录。但是,由于所有用户都启用了 MFA,因此我必须遵循概述的方法 in these docs我以用户身份手动登录并一次性交换刷新 token 。然后,我将其保存到文件中,然后守护程序可以不断地将其交换为访问 token 以及更新的刷新 token 。
但 msal-node
看起来并不支持仅使用开箱即用的刷新 token 。唯一接受一个参数作为参数的实例方法是 .acquireTokenByRefreshToken()
,它确实返回一个访问 token (请参阅 this sample ),但不更新实例的内部缓存或返回一个新的刷新 token ,因此现有的刷新 token 将提前过期。它似乎也已被弃用,取而代之的是 .acquireTokenSilent()
,但该方法要求实例的内部缓存已填充身份验证数据。但是,我没有看到任何公共(public)方法来手动设置内部缓存的数据,并且只有在调用诸如 .acquireTokenByCode()
之类的方法后才会自动设置,这些方法接受用户登录后生成的短期 token 。同样,由于所有用户都启用了 MFA,因此每次服务重新启动时都需要用户交互。
这有点像先有鸡还是先有蛋的问题。感谢任何帮助,我一直在阅读这么多 MS 文档和代码。
最佳答案
The refresh token is never returned to the user in a response
因此,按照设计,您无法通过这种方式获取和续订刷新 token 。
作为解决方法,您可以直接调用 Azure ad /token
端点 API,以通过旧 token 获取新刷新 token ,然后替换文件中的旧 token 。详情见this doc 。虽然标题是刷新访问 token
,但您可以在每个请求中获取新的刷新 token :
以便您可以在刷新 token 即将过期时刷新它。
关于node.js - MSAL Node 服务和合作伙伴中心 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68187077/
自从我进行任何 PHP 编程以来已经有一段时间了,所以我试图开始生锈。 我正在尝试创建一个关联数组结构。 [results] [total] [people] [
我正在将一些模块从 v7 迁移到 v10 现在我有这些继承 res.partner 的方法 @api.depends('company_id') def _get_country_code(self)
我是一名优秀的程序员,十分优秀!