我正在做一个项目,使用wso2企业服务总线作为集成总线,企业服务总线运行在集群环境中。现在ESB将通过连接器连接到第三方应用程序(如salesforce),salesforce将向esb连接器发出accesstoken。这里有两个问题:
1如何定期刷新访问令牌
accesstoken每2小时就会过期一次,那么如何避免被过期的accesstoken请求是无效的(一般情况下,系统需要每2小时获取一个新的token )。我在ESB示例中没有看到这个配置。
2如何在集群环境下共享访问令牌
发布于 2016-10-12 20:41:41
<salesforcerest.init>
<accessToken>{$ctx:accessToken}</accessToken>
<apiUrl>{$ctx:apiUrl}</apiUrl>
<clientId>{$ctx:clientId}</clientId>
<clientSecret>{$ctx:clientSecret}</clientSecret>
<refreshToken>{$ctx:refreshToken}</refreshToken>
<hostName>{$ctx:hostName}</hostName>
<apiVersion>{$ctx:apiVersion}</apiVersion>
<registryPath>{$ctx:registryPath}</registryPath>
<intervalTime>{$ctx:intervalTime}</intervalTime>
<salesforcerest.init>
在上述配置中,intervalTime以毫秒为单位检查访问令牌的有效性。例如,Salesforce访问令牌将在2小时后过期。因此,您需要以毫秒为单位提供少于2小时的intervalTime。一旦令牌过期,当您调用连接器方法时,它将检查访问令牌的有效性。如果已过期,连接器将使用刷新令牌刷新访问令牌,并将其保存在注册表中。在上面的配置中,您可以给出注册表路径。如果您没有在配置中传递注册表路径,连接器会将访问令牌保存在默认注册表路径中。
在WSO2 ESB部署中,配置注册表通常在集群节点之间挂载和共享,因此您可以在集群环境中共享访问令牌。
您可以参考wso2 documentation和blog了解连接器配置。连接器压缩文件可以从here下载。
发布于 2016-10-13 13:23:37
在上述配置中,您必须将注册表路径指定为"connectors/"connectorname"“。如果您想从用户名密码流中获取accessToken,则无需担心accessToken过期(仅适用于Salesforce REST连接器)。你可以关注here关于用户名密码流程的内容。在其他情况下,比如Google API连接器(例如Gmail),您不需要提供注册表路径,因为连接器本身会创建一个注册表位置来存储accessToken。
https://stackoverflow.com/questions/39980009
复制相似问题