我使用github oAuth身份验证在多用户模式下启动了composer rest服务器。我在chrome中打开了一个会话,在firefox中打开了一个会话(模拟为两个不同的用户)并使用github进行了身份验证。现在在一个浏览器中,我希望使用一个网卡,并在Chrome中使用另一个网卡。现在,当我在Firefox中导入网卡时,同样反映在Chrome中。它不会破坏authourisation的目的吗?因此,如果一个用户正在使用其网卡执行交易,则另一个用户也将使用与作为作曲家休息服务器的默认设置相同的网卡。如何处理场景?
答案 0 :(得分:2)
默认设置在 REST客户端 - 而不是REST服务器。您将REST API作为客户端使用 - 作为两个不同的区块链标识(包含在每个业务网卡中)。一旦客户端对REST API进行了身份验证,该客户端就可以将区块链身份添加到钱包中。钱包对该客户端是私有的,其他客户端无法访问。当REST客户端向REST服务器发出请求时,每个客户端钱包中的区块链标识用于对该客户端进行的所有事务进行数字签名(因为此时标识设置为默认值)。
github身份验证方案是一个委托的'身份验证方案,并使用客户端应用程序(id和secret)身份验证机制,使客户端能够使用REST API并获取令牌,而无需每次都以用户身份进行身份验证。
答案 1 :(得分:1)
我有同样的问题。使用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,
取决于您的有效负载/用户个人资料。
此后,每个用户都将在环回数据库中注册自己的身份,并且每个登录用户都应具有自己的钱包。