首页 > 解决方案 > 将另一个帐户与护照上的 oauth 关联

问题描述

语境:

特征:

我已经在 nodejs 上使用护照进行了身份验证。这会生成一个 jwt,允许用户使用对 api 的每个请求的标头中的不记名令牌对他们进行身份验证。

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

当使用授权码进行重定向时,我无法识别发起连接的用户,因为我在请求标头中不再有不记名令牌,并且两个帐户之间的数据可能不同(例如不同的电子邮件) .

有没有解决方法或者我错过了什么?谢谢您的帮助

标签: node.jspassport.jsdocusignapi

解决方案


Passport 有一种Authorize方法可用于向辅助 IdP 进行身份验证。例如:

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

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

  1. 您可以使用作为 OAuth 授权代码授权流程的一部分发送的 state 参数。但请务必使用该参数作为随机随机数来防范 CSRF 攻击。例如,发送idp1|random_nonce这样您就可以检查随机数并知道您应该与 idp1 通信,而不是 idp2。
  2. 您可以使用您的应用程序的会话机制来维护您的应用程序对您当时正在使用的 IdP 的状态信息。

推荐阅读