使用用户令牌在Express Gateway中存储其他信息

时间:2018-10-20 12:59:59

标签: express-gateway

我正在为SAML Assertion Flow到Salesforce的快速网关开发自定义策略。将策略放在express-gateway中,将使用户和通过Express-gateway身份验证的应用程序也可以自动通过Salesforce进行身份验证,而不会给客户端应用程序带来任何麻烦。

为防止在每次获取Salesforce令牌的请求上重新执行SAML断言流程,我们可以在快速网关中存储和重复使用Salesforce OAuth令牌。

因此,使用此策略通过快速网关公开的Salesforce API的基本流程为:

image Source

最困难的部分是要重新使用的商店令牌。我的想法是将配置从egContext传递到策略中。该策略可以获取Redis配置选项,然后我可以使用Redis重新保存令牌以及其他信息,例如:

 const tokenKey = db.options.namespace.concat('-access-token:', req.user.token.id);
 const consumerTokensKey = db.options.namespace.concat('-consumer-access-tokens:', req.user.token.consumerId);
 db.multi()
     .hmset(tokenKey, req.user.token)
     .hset(consumerTokensKey, req.user.token.id, req.user.token.expiresAt)
     .exec();

然后它将始终在前进的req.user.token上可用。唯一的问题是,该配置不打算像对Github issue #830

的响应中提到的那样成为公共API。

我的问题是,在这里实现目标的更好方法是什么?

0 个答案:

没有答案