使用WSO2AM 2.1.0,我们希望使用JWT令牌将api,用户和应用程序信息传递给后端服务以进行授权。问题在于JWT验证,因为到期时间戳设置为当前时间戳
阅读其他资源并没有多大帮助:api-manager.xml的内容
<CacheConfigurations>
<EnableGatewayTokenCache>true</EnableGatewayTokenCache>
<EnableGatewayResourceCache>true</EnableGatewayResourceCache>
<JWTClaimCacheExpiry>900</JWTClaimCacheExpiry>
...
<APIKeyValidator>
...
<JWTExpiryTime>900</JWTExpiryTime>
<SecurityContextTTL>900</SecurityContextTTL>
</APIKeyValidator>
(即使根据资源,JWTExpiryTime在启用KM或GW缓存时也没有效果)
如果禁用令牌缓存(待验证),看起来JWTExpiryTime有效,但出于性能原因,我们希望缓存访问令牌。
编辑:似乎启用了任一(Gateway或KeyManager)令牌缓存,JWT到期只是设置为当前时间戳(使得JWT令牌无法使用,而后端服务没有就令牌余量/时滞时间达成一些协议)。令牌缓存缓存生命周期(默认为15分钟),因此后端必须允许过期令牌持续15分钟。或者我错过了什么?
答案 0 :(得分:1)
如果令牌缓存被禁用(待验证),则JWTExpiryTime似乎有效
您在这里是正确的。仅当网关和密钥管理器缓存均被禁用时,才可以使用{APIM_HOME} /repository/conf/api-manager.xml中的 JWTExpiryTime 来设置JWT过期时间戳记。
但是,如果希望在禁用令牌的同时保持启用令牌缓存的功能,那么可以在CacheConfigurations部分的api-manager.xml中将 TokenCacheExpiry 属性设置为
<CacheConfigurations>
...
<TokenCacheExpiry>900</TokenCacheExpiry>
...
</CacheConfigurations>
使用此属性,您可以定义网关或密钥管理器的缓存过期时间,默认值为900(秒)。
有关更多信息,请参阅以下文档。