使用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分钟 . 或者我错过了什么?
1 回答
你在这里是对的 . 只有在禁用Gateway和Key Manager缓存时,才能使用 /repository/conf/api-manager.xml中的 JWTExpiryTime 设置JWT到期时间戳 .
但是,如果您希望保持启用令牌缓存,同时防止JWT在JWT生成时到期,则可以在CacheConfigurations部分的api-manager.xml中设置 TokenCacheExpiry 属性,如下所示 .
使用此属性可以定义网关或密钥管理器的缓存到期持续时间,默认值为900(秒) .
有关更多信息,请参阅以下文档 .
https://docs.wso2.com/display/AM210/Configuring+Caching
https://docs.wso2.com/display/AM210/Passing+Enduser+Attributes+to+the+Backend+Using+JWT#PassingEnduserAttributestotheBackendUsingJWT-ExpirytimeoftheJWT