我拥有一份有效期应该为10小时的访问令牌,但它在30分钟后就过期了。我使用它调用Keycloak rest api,它能够工作半个小时,但之后我会收到401 - 未经授权的错误。我在jwt.io上对其进行解码,exp声明是在我获得它后的10小时。我检查了系统时间,一切都看起来没问题。问题可能是什么?
我拥有一份有效期应该为10小时的访问令牌,但它在30分钟后就过期了。我使用它调用Keycloak rest api,它能够工作半个小时,但之后我会收到401 - 未经授权的错误。我在jwt.io上对其进行解码,exp声明是在我获得它后的10小时。我检查了系统时间,一切都看起来没问题。问题可能是什么?
由于您没有分享您的配置,我假设您将“访问令牌寿命”设置为10小时(正如您所提到的jwt中反映的那样)。
为了避免多次登录,您需要将SSO会话时间设置为10小时。 (请参见下面图像中突出显示的2和3。)
现在来谈谈访问令牌,如果您正在使用浏览器测试您的API,则可以将其设置为小于SSO会话值的任何值。因为会话cookie将由keycloak自动处理。
但是,如果您正在使用PostMan或其他客户端测试您的API并希望在10小时内使用相同的令牌,则还需将访问令牌设置为10小时。
更多详细信息,请参考: https://www.keycloak.org/docs/latest/server_admin/#_timeouts