WSO2 IS 5.3.0作为AM 2.1.0密钥管理器配置后API访问报错求助
我之前帮不少用户排查过这个问题,900900错误本质是API Manager没法正常和Identity Server的密钥验证后端服务通信,大概率是配置环节的疏漏,咱们一步步来排查:
检查IS与AM的基础通信配置
打开AM的repository/conf/api-manager.xml,找到<KeyManager>节点:- 确认
<ServerURL>指向IS的正确HTTPS服务地址,格式应该是https://<IS_HOST>:9443/services/ - 核对
<Username>和<Password>是否是IS中拥有管理员权限的账号,密码必须完全匹配
同时检查IS的repository/conf/identity.xml,找到<OAuth>下的<EnableOAuth2TokenValidation>,确保值设为true——这是开启IS密钥验证服务的核心开关。
- 确认
解决证书信任问题
AM和IS之间通过HTTPS通信,AM必须信任IS的服务器证书:- 导出IS的证书:
keytool -export -alias wso2carbon -file is_cert.cer -keystore <IS_HOME>/repository/resources/security/wso2carbon.jks - 将证书导入AM的信任库:
keytool -import -alias is_cert -file is_cert.cer -keystore <AM_HOME>/repository/resources/security/client-truststore.jks
导入完成后,重启AM和IS服务,确保证书生效。
- 导出IS的证书:
验证IS密钥验证服务状态
直接访问IS的OAuth2验证服务端点:https://<IS_HOST>:9443/services/OAuth2TokenValidationService,如果能正常显示WSDL页面,说明服务运行正常;如果无法访问,查看IS的启动日志(repository/logs/wso2carbon.log),排查是否有端口占用、服务启动失败等报错。排查AM的密钥验证配置细节
回到AM的repository/conf/api-manager.xml,找到<APISecurity>下的<KeyValidationHandler>:- 确认
<ServerURL>和<KeyManager>中的配置一致 - 确保
<EnableTokenValidation>设为true
同时查看AM的日志,搜索900900或者Error while accessing backend services,日志里会有更具体的错误信息(比如连接超时、认证失败),能帮你快速定位问题。
- 确认
确认令牌与应用配置有效性
检查IS中创建的OAuth应用是否和AM里API关联的应用对应,同时验证访问令牌的有效性:
可以用IS的令牌 introspect 端点验证,请求参数携带token=<你的访问令牌>、client_id和client_secret,确认令牌未过期、权限匹配。
按照上面的步骤逐一排查,基本能解决这个问题。如果还是卡壳,把AM和IS的具体日志片段贴出来,能更快定位根因。
内容的提问来源于stack exchange,提问作者user3868307

