【问题标题】:wso2-am 2.1.0 jwt token expirationwso2-am 2.1.0 jwt 令牌过期
【发布时间】:2018-02-07 04:18:50
【问题描述】:

使用 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>

(即使根据资源,启用 KM 或 GW 缓存时 JWTExpiryTime 也无效)

如果禁用令牌缓存(待验证),JWTExpiryTime 似乎有效,但出于性能原因,我们希望缓存访问令牌..

编辑:似乎如果启用(网关或密钥管理器)令牌缓存,JWT 到期只是设置为当前时间戳(使 JWT 令牌无法使用,而后端服务没有就令牌余地/倾斜时间达成一致)。令牌被缓存为缓存寿命(默认为 15 分钟),因此后端必须允许过期令牌 15 分钟。还是我错过了什么?

【问题讨论】:

    标签: wso2 wso2-am


    【解决方案1】:

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

    你说得对。仅当网关和密钥管理器缓存都被禁用时,您才能在 {APIM_HOME}/repository/conf/api-manager.xml 中使用 JWTExpiryTime 设置 JWT 过期时间戳。

    但是,如果您希望令牌缓存保持启用状态,同时防止您的 JWT 在生成 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

    【讨论】:

      猜你喜欢
      • 2019-08-02
      • 2020-03-10
      • 2017-03-04
      • 2019-07-04
      • 2022-06-18
      • 1970-01-01
      • 2018-06-19
      • 2019-08-08
      • 1970-01-01
      相关资源
      最近更新 更多