【发布时间】:2018-02-07 04:18:50
【问题描述】:
使用 WSO2AM 2.1.0,我们希望使用 JWT 令牌将 api、用户和应用程序信息传递给后端服务以进行授权。问题在于 JWT 验证,因为过期时间戳设置为当前时间戳
阅读其他资源并没有多大帮助:
- https://wso2.org/jira/browse/APIMANAGER-4575
- https://wso2.org/jira/browse/APIMANAGER-3493
- WSO2 Api Manager - How to change the expiration time of JWT?
api-manager.xml 的内容
<CacheConfigurations>
<EnableGatewayTokenCache>true</EnableGatewayTokenCache>
<EnableGatewayResourceCache>true</EnableGatewayResourceCache>
<JWTClaimCacheExpiry>900</JWTClaimCacheExpiry>
...
<APIKeyValidator>
...
<JWTExpiryTime>900</JWTExpiryTime>
<SecurityContextTTL>900</SecurityContextTTL>
</APIKeyValidator>
(即使根据资源,启用 KM 或 GW 缓存时 JWTExpiryTime 也无效)
如果禁用令牌缓存(待验证),JWTExpiryTime 似乎有效,但出于性能原因,我们希望缓存访问令牌..
编辑:似乎如果启用(网关或密钥管理器)令牌缓存,JWT 到期只是设置为当前时间戳(使 JWT 令牌无法使用,而后端服务没有就令牌余地/倾斜时间达成一致)。令牌被缓存为缓存寿命(默认为 15 分钟),因此后端必须允许过期令牌 15 分钟。还是我错过了什么?
【问题讨论】: