WSO2 API管理器:使用访问令牌使用来自多个服务器的服务

WSO2 API管理器:使用访问令牌使用来自多个服务器的服务,wso2,wso2esb,Wso2,Wso2esb,从多台服务器使用AM服务的最佳实践是什么 我们的应用程序正在多台服务器上运行。此应用程序希望使用API管理器上的服务。如果访问令牌过期,会发生什么情况?如果要求AM生成新密钥,则必须将该密钥分发给其他服务器 若访问令牌已过期,则应用程序必须使用已接收的刷新令牌调用/令牌端点,并授予新的访问令牌。它将返回新的访问令牌和刷新令牌。但是,由于您的应用程序在多台服务器上运行。我猜您授予的访问令牌密钥必须在服务器之间分发(或保留在共享它的某些位置)才能共享。以下是授予具有刷新令牌的访问令牌的curl命令。

从多台服务器使用AM服务的最佳实践是什么


我们的应用程序正在多台服务器上运行。此应用程序希望使用API管理器上的服务。如果访问令牌过期,会发生什么情况?如果要求AM生成新密钥,则必须将该密钥分发给其他服务器

若访问令牌已过期,则应用程序必须使用已接收的刷新令牌调用/令牌端点,并授予新的访问令牌。它将返回新的访问令牌和刷新令牌。但是,由于您的应用程序在多台服务器上运行。我猜您授予的访问令牌密钥必须在服务器之间分发(或保留在共享它的某些位置)才能共享。以下是授予具有刷新令牌的访问令牌的curl命令。但是,如果您使用的是客户端凭据授予类型,则不会有访问令牌

curl——用户qthvchl_cmhuhul9zcvfeuflua:oPWeFHA9fZOupg1ZwjfWODJXueIa-k-d“grant_type=refresh_token&refresh_token=9868904f301b16589f706eef64661da6”-H”内容类型:application/x-www-form-urlencoded“https://{ip}:{port}/oauth2 token

{“令牌类型”:“承载”、“到期日”:3600,“刷新令牌”:“c928b8255ae52681415ef44a0dfccd7”、“访问令牌”:“66396CF3F14DFC51A94191178D3D7”}asela@asela:~/is/450/wso2is-4.5.0/bin$


分发新的访问令牌是一个问题。如果多台服务器访问AM,其访问令牌过期,所有服务器将访问AM以获取新的访问令牌,会发生什么情况。他们在这方面是否有任何最佳做法。我们不能“保留”处理服务器。我想这取决于用例。如果您想将访问令牌保留几天。最好将访问令牌持久化到所有应用程序服务器都已连接到该数据库的数据库中。应用程序将为每个用户授予访问令牌。在数据库中,可以保持用户、API和accessToken的映射。一旦访问令牌过期。它可以更新和更新。因此,每个服务器都可以共享它。我已经看到,在一段时间内,如果服务器在给定的时间段内使用访问令牌,那么用户会话将可用。无法在用户会话中设置令牌。并且可以使用分布式缓存(如hazelcast)进行分发。WSO2产品使用hazelcast缓存在每个服务器之间分发数据,一旦服务器部署为clustersIMHO:这是一件复杂的事情。对于我们的应用程序,分布在多个服务器上,每台服务器每分钟处理数千个请求,我们会遇到访问令牌无效的情况,这意味着请求将失败。因此,哪个服务器将获得一个新的访问令牌。当服务器获得新密钥时,我们不能支持挂起应用程序。这种情况对其他客户无效吗?实际上,在访问令牌过期之前,应用程序将不会停留。在应用程序端,您可能需要某种计时器,一旦访问令牌即将过期,应用程序必须对其进行续订。