node.js - 将另一个帐户与护照上的 oauth 关联
问题描述
语境:
- 1 个水疗中心
- 1 个 API
- 1 现有的护照策略与 jwt
特征:
- 使用 oauth 将其他帐户连接到现有帐户
我已经在 nodejs 上使用护照进行了身份验证。这会生成一个 jwt,允许用户使用对 api 的每个请求的标头中的不记名令牌对他们进行身份验证。
我想向现有帐户添加一个额外的 oauth 连接(实际上它是 docusign 但我认为问题可能与其他连接相同)。
当使用授权码进行重定向时,我无法识别发起连接的用户,因为我在请求标头中不再有不记名令牌,并且两个帐户之间的数据可能不同(例如不同的电子邮件) .
有没有解决方法或者我错过了什么?谢谢您的帮助
解决方案
Passport 有一种Authorize
方法可用于向辅助 IdP 进行身份验证。例如:
- 使用 Passport#Login 使用户能够登录到应用程序的主要 IdP
- 使用 Passport#Authorize 使用户能够根据需要使用辅助 IdP(例如 DocuSign)进行身份验证。
关于重定向方法的状态(确定应使用哪个 IdP 来交换访问令牌的授权代码):
- 您可以使用作为 OAuth 授权代码授权流程的一部分发送的 state 参数。但请务必使用该参数作为随机随机数来防范 CSRF 攻击。例如,发送
idp1|random_nonce
这样您就可以检查随机数并知道您应该与 idp1 通信,而不是 idp2。 - 您可以使用您的应用程序的会话机制来维护您的应用程序对您当时正在使用的 IdP 的状态信息。
推荐阅读
- apache-nifi - 无法使用 apache Nifi 连接到 Clickhouse 数据库
- python - 请求表单导致错误 405 Method Not Allowed in Flask
- docker - 将人工 blob 转换为 docker 注册表结构
- c++ - 如何使用 ros | cmake 与 gitlab-ci
- reactjs - 从 React 切换到 Next.js 后,由于 Service Worker 的缓存,网站没有刷新。如何强制更新?
- python - 如何将文本小部件传递给另一个模块中的函数
- qt - 颜色不是透明,而是黑色
- c# - 如何使用来自另一个类(C#)的变量来实现搜索功能?
- timer - STM32定时器时钟频率不变,保持在1.6MHz
- python - 我们如何根据标题进行分组和求和?所以水平,而不是垂直,分组依据和总和