WSO2 API Manager集成IS作为密钥管理器刷新令牌报错
WSO2 APIM 4.1.0 搭配 IS 5.11.0 刷新令牌时出现500错误
问题场景
使用WSO2 API Manager 4.1.0,将WSO2 Identity Server 5.11.0配置为密钥管理器后,执行以下curl命令通过refresh_token授权类型获取新AccessToken时,服务器返回500内部错误:
curl -k -d "grant_type=refresh_token&refresh_token=<refresh_token>" -H "Authorization: Basic <Base64Encoded(Client_Id:Client_Secret)>" -H "Content-Type: application/x-www-form-urlencoded" https://localhost:9443/oauth2/token
错误日志关键信息
Identity Server日志中抛出NoSuchMethodError异常,核心堆栈信息如下:
Caused by: java.lang.NoSuchMethodError: org.wso2.carbon.identity.oauth2.model.RefreshTokenValidationDataDO.getAccessTokenIssuedTime()Ljava/sql/Timestamp; at org.wso2.is.notification.ApimOauthEventInterceptor.onPostTokenRenewal(ApimOauthEventInterceptor.java:207)
问题原因
这是版本兼容性不匹配导致的问题:
- WSO2 APIM 4.1.0配套的密钥管理器事件拦截器(
ApimOauthEventInterceptor)依赖IS中RefreshTokenValidationDataDO类的getAccessTokenIssuedTime()方法,但该方法在IS 5.11.0中尚未存在,是在更高版本的IS中新增的。 - APIM 4.1.0的官方兼容逻辑中,推荐的IS密钥管理器版本为5.12.0及以上,使用IS 5.11.0属于跨版本不兼容场景。
解决方向
升级Identity Server版本
将IS 5.11.0升级到与APIM 4.1.0兼容的版本(如IS 5.12.0或更高),确保两个产品的API和模型类版本对齐。校验密钥管理器配置包
如果是通过APIM提供的密钥管理器配置包部署到IS,确认使用的是对应APIM 4.1.0版本的配置包,避免使用旧版本的拦截器jar包。临时禁用事件拦截器(仅作为应急方案)
如果暂时无法升级,可在IS的repository/conf/deployment.toml中禁用ApimOauthEventInterceptor,但这会影响APIM与IS之间的事件同步功能:[oauth.event_interceptors] ApimOauthEventInterceptor.enable = false
内容的提问来源于stack exchange,提问作者Lilan Mihiranga
相关产品推荐
相关产品推荐

