Link 护照上有 oauth 的另一个帐户

Link another account with oauth on passport

上下文:

特征:

我已经在 nodejs 上使用 passport 进行了身份验证。 这会生成一个 jwt,允许用户在对 api.

的每个请求的 header 中使用持有者令牌对他们进行身份验证

我想为现有帐户添加一个额外的 oauth 连接(实际上它是 docusign,但我认为问题可能与其他连接相同)。

当有授权码重定向时,我无法识别发起连接的用户,因为我不再有请求中的不记名令牌header和两个帐户之间的数据可以不同(例如不同的电子邮件)。

是否有解决此问题的方法,或者我错过了什么? 感谢您的帮助

我唯一能想到的是有 2 个应用程序。每个都可以 运行 在不同的端口或 vd 上。每个人都会有自己的护照策略。这两个应用程序可以重定向到彼此 and/or 使用 API 端点进行通信以在它们之间传递数据。

Passport 有一个 Authorize 方法,可用于通过辅助 IdP 进行身份验证。例如:

  1. 使用 Passport#Login 使用户能够登录到应用程序的主要 IdP
  2. 使用 Passport#Authorize 使用户能够根据需要使用辅助 IdP(例如 DocuSign)进行身份验证。

关于重定向方法的状态(确定应使用哪个 IdP 来交换访问令牌的授权代码):

  1. 您可以使用作为 OAuth 授权代码授予流程的一部分发送的状态参数。但一定要将该参数用作随机数以防止 CSRF 攻击。例如,发送 idp1|random_nonce 这样您既可以检查 nonce 又可以知道您应该与 idp1 而不是 idp2 通信。
  2. 您可以使用您的应用程序的会话机制来维护您的应用程序的状态知识,即您当时正在使用哪个 IdP。