wso2-am 2.1.0 jwt令牌到期

时间:2017-08-29 16:04:13

标签: wso2 wso2-am

使用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 个答案:

答案 0 :(得分:1)

  

如果令牌缓存被禁用(待验证),则JWTExpiryTime似乎有效

您在这里是正确的。仅当网关和密钥管理器缓存均被禁用时,才可以使用{APIM_HOME} /repository/conf/api-manager.xml中的 JWTExpiryTime 来设置JWT过期时间戳记。

但是,如果希望在禁用令牌的同时保持启用令牌缓存的功能,那么可以在CacheConfigurations部分的api-manager.xml中将 TokenCacheExpiry 属性设置为

<CacheConfigurations>
    ...
    <TokenCacheExpiry>900</TokenCacheExpiry>
    ...
</CacheConfigurations>

使用此属性,您可以定义网关或密钥管理器的缓存过期时间,默认值为900(秒)。

有关更多信息,请参阅以下文档。

  1. https://docs.wso2.com/display/AM210/Configuring+Caching
  2. https://docs.wso2.com/display/AM210/Passing+Enduser+Attributes+to+the+Backend+Using+JWT#PassingEnduserAttributestotheBackendUsingJWT-ExpirytimeoftheJWT