You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WSO2 APIM更新应用报错:WSO2 IS提示应用所有者用户不存在

问题:WSO2 APIM更新应用时IS端报错

使用WSO2 IS (5.11)作为WSO2 APIM (4.1.0)的密钥管理器,可正常在APIM创建应用并通过IS完成登录,但尝试更新应用时,WSO2 IS端抛出如下错误:

[2024-01-19 08:13:30,317] [be0d4b91-1b5b-4b07-819a-46ef921d3a72]  WARN {org.wso2.carbon.identity.oauth.OAuthAdminServiceImpl} - OAuth应用所有者用户名admin@carbon.super在用户存储中不存在。使用用户admin@carbon.super作为应用所有者。
[2024-01-19 08:13:30,320] [be0d4b91-1b5b-4b07-819a-46ef921d3a72] ERROR {org.wso2.carbon.identity.oauth.OAuthAdminService} - org.wso2.carbon.identity.oauth.IdentityOAuthAdminException: 应用所有者更新验证失败,应用admin_1663645e-7a69-4e21-ad99-f1ef6eec4dd3_PRODUCTION对应的用户不存在。
[2024-01-19 08:13:30,392] [be0d4b91-1b5b-4b07-819a-46ef921d3a72] ERROR {org.wso2.is.key.manager.operations.endpoint.impl.DcrApiServiceImpl} - Internal Server Error org.wso2.carbon.identity.oauth.dcr.exception.DCRMServerException: 更新客户端密钥为SN5D_nDnKLX2Z6QAMPspOsiNvxYa的应用时出错
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
    at org.wso2.carbon.identity.base.IdentityException.error(IdentityException.java:100)
    at org.wso2.carbon.identity.oauth.dcr.util.DCRMUtils.generateServerException(DCRMUtils.java:123)
    at org.wso2.is.key.manager.operations.endpoint.dcr.service.DCRMService.updateApplication(DCRMService.java:189)
    at org.wso2.is.key.manager.operations.endpoint.impl.DcrApiServiceImpl.updateApplication(DcrApiServiceImpl.java:136)
    at org.wso2.is.key.manager.operations.endpoint.DcrApi.updateApplication(DcrApi.java:118)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at org.apache.cxf.service.invoker.AbstractInvoker.performInvocation(AbstractInvoker.java:179)
    at org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:96)
    at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:201)
    at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:104)
    at org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:59)
    at org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:96)
    at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:308)
    at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121)
    at org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:267)
    at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:234)
    at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:208)
    at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:160)
    at org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:225)
    at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:296)
    at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPut(AbstractHTTPServlet.java:232)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:663)
    at org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:271)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.wso2.carbon.ui.filters.cache.ContentTypeBasedCachePreventionFilter.doFilter(ContentTypeBasedCachePreventionFilter.java:53)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.apache.catalina.filters.HttpHeaderSecurityFilter.doFilter(HttpHeaderSecurityFilter.java:126)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
    at org.wso2.carbon.identity.context.rewrite.valve.TenantContextRewriteValve.invoke(TenantContextRewriteValve.java:107)
    at org.wso2.carbon.identity.cors.valve.CORSValve.invoke(CORSValve.java:98)
    at org.wso2.carbon.identity.authz.valve.AuthorizationValve.invoke(AuthorizationValve.java:102)
    at org.wso2.carbon.identity.auth.valve.AuthenticationValve.invoke(AuthenticationValve.java:123)
    at org.wso2.carbon.tomcat.ext.valves.CompositeValve.continueInvocation(CompositeValve.java:99)
    at org.wso2.carbon.tomcat.ext.valves.TomcatValveContainer.invokeValves(TomcatValveContainer.java:49)
    at org.wso2.carbon.tomcat.ext.valves.CompositeValve.invoke(CompositeValve.java:62)
    at org.wso2.carbon.tomcat.ext.valves.CarbonStuckThreadDetectionValve.invoke(CarbonStuckThreadDetectionValve.java:145)
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:690)
    at org.wso2.carbon.tomcat.ext.valves.CarbonContextCreatorValve.invoke(CarbonContextCreatorValve.java:57)
    at org.wso2.carbon.tomcat.ext.valves.RequestEncodingValve.invoke(RequestEncodingValve.java:49)
    at org.wso2.carbon.tomcat.ext.valves.RequestCorrelationIdValve.invoke(RequestCorrelationIdValve.java:126)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
    at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:373)
    at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
    at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1590)
    at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: org.wso2.carbon.identity.oauth.IdentityOAuthAdminException: 应用所有者更新验证失败,应用admin_1663645e-7a69-4e21-ad99-f1ef6eec4dd3_PRODUCTION对应的用户不存在。
    at org.wso2.carbon.identity.oauth.dao.OAuthAppDAO.validateUserForOwnerUpdate(OAuthAppDAO.java:494)
    at org.wso2.carbon.identity.oauth.dao.OAuthAppDAO.updateConsumerApplication(OAuthAppDAO.java:439)
    at org.wso2.carbon.identity.oauth.OAuthAdminServiceImpl.updateConsumerApplication(OAuthAdminServiceImpl.java:483)
    at org.wso2.carbon.identity.oauth.OAuthAdminService.updateConsumerApplication(OAuthAdminService.java:148)
    at org.wso2.is.key.manager.operations.endpoint.dcr.service.DCRMService.updateApplication(DCRMService.java:187)
    ... 62 more
解决方案

1. 验证IS中用户的存在性

登录WSO2 IS管理控制台(https://<IS_HOST>:9443/carbon),进入用户和角色管理,搜索应用所有者用户(如日志中的admin@carbon.super),确认该用户是否存在于IS的用户存储中。

2. 同步APIM与IS的用户数据

若APIM和IS使用独立的用户存储,需配置用户数据同步:

  • 配置共享用户存储:将APIM和IS指向同一个JDBC用户存储,确保用户数据一致。
  • 使用SCIM同步:通过SCIM API将APIM中的用户同步到IS,或反之。

3. 修正应用所有者配置

  • 若用户不存在,在IS中手动创建对应的用户账号。
  • 在APIM控制台修改目标应用的所有者为IS中已存在的用户,再尝试更新操作。

4. 检查IS用户存储配置

确认IS的用户存储配置文件(repository/conf/user-mgt.xml)中的连接参数、用户检索过滤器等配置正确,确保IS能正常读取用户存储中的数据。

5. 临时绕过验证(仅测试环境)

若为测试场景,可修改IS的OAuth验证逻辑,暂时跳过用户存在性检查,但此方法严禁用于生产环境,会带来安全风险。

内容的提问来源于stack exchange,提问作者user5919369

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 19:05:55