【问题标题】:Link another account with oauth on passport将另一个帐户与护照上的 oauth 关联
【发布时间】:2020-07-01 14:12:47
【问题描述】:

上下文:

  • 1 个水疗中心
  • 1 个接口
  • 1 现有的 jwt 护照策略

特点:

  • 使用 oauth 将其他帐户连接到现有帐户

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

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

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

是否有解决方法或者我错过了什么? 谢谢你的帮助

【问题讨论】:

    标签: node.js passport.js docusignapi


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 感谢您的回复。您的建议效果很好:在 state 参数中使用具有过期时间且可使用一次的令牌。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-11-27
      • 1970-01-01
      • 2013-03-09
      • 1970-01-01
      • 2013-11-25
      • 2015-08-05
      • 2013-12-23
      相关资源
      最近更新 更多