多个 composer rest 服务器用户使用相同的网卡

Same network card for multiple composer rest server users

我在多用户模式下启动了 composer rest 服务器,使用 github oAuth 身份验证。我在 chrome 中打开了一个会话,在 firefox 中打开了一个(模拟两个不同的用户)并使用 github 进行了身份验证。现在我希望在一个浏览器中使用一个网卡,在 chrome 中使用另一个网卡。现在,当我在 firefox 中导入网卡时,Chrome 中也会出现同样的情况。它不会破坏授权的目的吗?因此,如果一个用户使用其网卡执行交易,则另一个用户也将使用相同的网卡,因为它已被设置为 composer rest 服务器的默认设置。如何处理场景?

默认设置在 REST 客户端 - 而不是 REST 服务器。您正在使用 REST APIs 作为客户端——作为两个不同的区块链身份(包含在您的每个业务网络卡中)。一旦客户端通过 REST API 的身份验证,该客户端就可以将区块链身份添加到钱包中。钱包是该客户私有的,其他客户无法访问。当 REST 客户端向 REST 服务器发出请求时,每个客户端钱包中的区块链身份用于对该客户端进行的所有交易进行数字签名(因为当时身份设置为默认)。

github 身份验证方案是一种 'delegated' 身份验证方案,它使用客户端应用程序(id 和密码)身份验证机制来使客户端能够使用 REST APIs 和获取令牌,无需每次都以用户身份进行身份验证。

我遇到了同样的问题。使用 jwt 策略为多用户配置了 composer rest 服务器,但无论哪个用户登录,我都看到相同的钱包(和相同的默认卡)。

我发现主要管理钱包数据的 loopback-component-passport 包正在正确导入我的用户,但他们都与相同的身份相关联,因为身份 ID 是从 COMPOSER_PROVIDERS配置而不是登录用户。

为了修复它,我修改了 loopback-component-passport/lib/models/user-identity.js.

查看第 100 行周围的 UserIdentity.login 方法,其中填充了 userIdentity。

变化:

provider: provider, 

类似于

provider: profile.sub,

取决于您的负载/用户配置文件。

之后,每个用户都会在您的环回数据库中注册自己的身份,每个登录用户都应该有自己的钱包。