首页 > 解决方案 > 由于 WSO2 IS-KM 作为 WSO2 API M 中的密钥管理器的未分类身份验证失败,API 身份验证失败

问题描述

您好,我对 WSO2 产品非常陌生,正在探索 WSO2 API Manager 2.6.0 和 WSO2 IS - KM 5.9.0。我正在尝试使用 WSO2 IS -KM 作为 WSO2 API M 的密钥管理器。我已遵循https://docs.wso2.com/display/AM260/Configuring+WSO2+Identity+Server+as+a中提到的所有步骤+Key+Manager#ConfiguringWSO2IdentityServerasaKeyManager-Step1-下载WSO2ISasaKeyManager(WSO2IS-KM)

但是当我尝试通过 API Manager 调用带有生成令牌的 API 时,我在 API M 碳日志中收到以下错误。

TID:[-1] [] [2019-11-04 16:51:40,484] WARN {org.apache.synapse.transport.http.access.AccessConfiguration} - 从文件加载属性时出错:access-log.properties {org .apache.synapse.transport.http.access.AccessConfiguration} TID:[-1234] [] [2019-11-04 16:51:40,535] INFO {org.apache.synapse.core.axis2.TimeoutHandler} - 这个引擎将在 GLOBAL_TIMEOUT: 120 秒后过期所有回调,无论超时操作如何,在指定或可选超时 {org.apache.synapse.core.axis2.TimeoutHandler} TID: [-1234] [] [2019-11-04 16 :52:52,019] 调试 {org.wso2.carbon.apimgt.gateway.handlers.security.oauth.OAuthAuthenticator} - 收到令牌 403252b7-c890-38ce-add7-013eb510b1e3 {org.wso2.carbon.apimgt.gateway.handlers。 security.oauth.OAuthAuthenticator} TID:[-1234] [] [2019-11-04 16:52:52,019] 调试 {org.wso2.carbon.apimgt.gateway.handlers.security.oauth.OAuthAuthenticator} - 默认版本 API 调用 {org.wso2.carbon.apimgt.gateway.handlers.security.oauth.OAuthAuthenticator} TID:[-1234] [] [2019-11-04 16: 52:52,019] 调试 {org.wso2.carbon.apimgt.gateway.handlers.security.oauth.OAuthAuthenticator} - 从标头 {org.wso2.carbon.apimgt.gateway.handlers.security.oauth.OAuthAuthenticator} TID 中删除授权标头:[-1234] [] [2019-11-04 16:52:52,020] 调试 {org.wso2.carbon.apimgt.gateway.handlers.security.APIKeyValidator} - 在缓存中找不到密钥的资源:/pocGet/1.0 .0/1.0.0/getAllDDN:GET {org.wso2.carbon.apimgt.gateway.handlers.security.APIKeyValidator} TID: [-1234] [] [2019-11-04 16:52:52,020] 调试 {org .wso2.carbon.apimgt.gateway.handlers.security.APIKeyValidator} - 在 msg 上下文中设置 REST_SUB_REQUEST_PATH:/getAllDDN {org.wso2.carbon.apimgt.gateway.handlers.security.APIKeyValidator} TID:[-1234] [] [2019-11-04 16:52:52,020] 调试 {org.wso2.carbon.apimgt.gateway.handlers.security.APIKeyValidator} - 缓存未命中密钥资源:/pocGet/1.0.0/1.0.0/getAllDDN:GET {org.wso2.carbon.apimgt.gateway.handlers.security.APIKeyValidator} TID:[-1234] [] [2019-11-04 16 :52:52,021] 调试 {org.wso2.carbon.apimgt.gateway.handlers.security.APIKeyValidator} - 在缓存中找不到密钥的 API 对象:/pocGet/1.0.0/1.0.0 {org.wso2.carbon .apimgt.gateway.handlers.security.APIKeyValidator} TID:[-1234] [] [2019-11-04 16:52:52,022] 调试 {org.wso2.carbon.apimgt.gateway.handlers.security.keys.APIKeyValidatorClientPool } - 初始化新的 APIKeyValidatorClient 实例 {org.wso2.carbon.apimgt.gateway.handlers.security.keys.APIKeyValidatorClientPool} TID: [-1234] [] [2019-11-04 16:52:52,032] DEBUG {org.wso2.carbon.apimgt.gateway.handlers.security.keys.APIKeyValidatorClient} - 在 [2019.11.04 16:52:52,032 IST] 处通过 Web 服务调用获取从网关到 keymanager 的所有 URI 模板请求:/pocGet/1.0.0 {org.wso2.carbon.apimgt.gateway.handlers.security.keys.APIKeyValidatorClient} TID:[-1234] [] [2019-11-04 16:52:54,786] 调试 {org.wso2.carbon.apimgt.gateway .handlers.security.APIAuthenticationHandler} - 调用密钥管理器:API 调用失败原因=API_authentication_failure transactionId=urn:uuid:32a9f7d6-f642-4276-8452-637d65a01d61 with userAgent=PostmanRuntime/7.1.1 for requestURI=/pocGet/1.0。 0/getAllDDN at time=Mon Nov 04 16:52:52 IST 2019 from clientIP=10.40.254.70, elapsedTimeInMilliseconds=0 {org.wso2.carbon.apimgt.gateway.handlers.security.APIAuthenticationHandler} TID:[-1234] [ ] [2019-11-04 16:52:54,789] 错误 {org.wso2.carbon.apimgt.gateway.handlers.security.APIAuthenticationHandler} - 由于未分类的身份验证失败导致 API 身份验证失败 {org.wso2.carbon.apimgt.gateway.handlers.security.APIAuthenticationHandler} org.wso2.carbon.apimgt.gateway.handlers.security.APISecurityException:在 org.wso2.carbon.apimgt.gateway.handlers.security.keys.WSAPIKeyDataStore.getAllURITemplates(WSAPIKeyDataStore.java:77) 在 org.wso2.carbon.apimgt.gateway.handlers.security 访问后端服务以进行 API 密钥验证时出错.APIKeyValidator.getAllURITemplates(APIKeyValidator.java:791) 在 org.wso2.carbon.apimgt.gateway.handlers.security.APIKeyValidator.doGetAPIInfo(APIKeyValidator.java:639) 在 org.wso2.carbon.apimgt.gateway.handlers.security .APIKeyValidator.findMatchingVerb(APIKeyValidator.java:573) 在 org.wso2.carbon.apimgt.gateway。handlers.security.APIKeyValidator.getResourceAuthenticationScheme(APIKeyValidator.java:357) at org.wso2.carbon.apimgt.gateway.handlers.security.oauth.OAuthAuthenticator.authenticate(OAuthAuthenticator.java:127) at org.wso2.carbon.apimgt。 gateway.handlers.security.APIAuthenticationHandler.isAuthenticate(APIAuthenticationHandler.java:210) 在 org.wso2.carbon.apimgt.gateway.handlers.security.APIAuthenticationHandler.handleRequest(APIAuthenticationHandler.java:158) 在 org.apache.synapse.rest。 API.process(API.java:325) at org.apache.synapse.rest.RESTRequestHandler.apiProcessNonDefaultStrategy(RESTRequestHandler.java:149) at org.apache.synapse.rest.RESTRequestHandler.dispatchToAPI(RESTRequestHandler.java:95) at org .apache.synapse.rest.RESTRequestHandler.process(RESTRequestHandler.java:71) 在 org.apache.synapse.core.axis2.SynapseMessageReceiver.receive(SynapseMessageReceiver.java:92) 在 org.apache.axis2 的 org.apache.synapse.core.axis2.Axis2SynapseEnvironment.injectMessage(Axis2SynapseEnvironment.java:303) .engine.AxisEngine.receive(AxisEngine.java:180) at org.apache.synapse.transport.passthru.ServerWorker.processNonEntityEnclosingRESTHandler(ServerWorker.java:337) at org.apache.synapse.transport.passthru.ServerWorker.run(ServerWorker .java:158) 在 org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:172) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 在 java.util .concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) 原因:org.wso2。carbon.apimgt.gateway.handlers.security.APISecurityException:在 org.wso2.carbon.apimgt.gateway.handlers.security.keys.APIKeyValidatorClient.getAllURITemplates(APIKeyValidatorClient.java:189) 访问后端服务以进行 API 密钥验证时出错.wso2.carbon.apimgt.gateway.handlers.security.keys.WSAPIKeyDataStore.getAllURITemplates(WSAPIKeyDataStore.java:75) ... 20 更多原因:org.apache.axis2.AxisFault: org.apache.axis2.databinding.ADBException : 意外的子元素 {getAllURITemplates(WSAPIKeyDataStore.java:75) ... 20 更多原因:org.apache.axis2.AxisFault: org.apache.axis2.databinding.ADBException: Unexpected subelement {getAllURITemplates(WSAPIKeyDataStore.java:75) ... 20 更多原因:org.apache.axis2.AxisFault: org.apache.axis2.databinding.ADBException: Unexpected subelement {http://model.api.apimgt.carbon.wso2.org/xsd }id 在 org.apache.axis2.AxisFault.makeFault(AxisFault.java:430) 在 org.wso2.carbon.apimgt.keymgt.stub.validator .APIKeyValidationServiceStub.fromOM(APIKeyValidationServiceStub.java:1452) 在 org.wso2.carbon.apimgt.keymgt.stub.validator.APIKeyValidationServiceStub.getAllURITemplates(APIKeyValidationServiceStub.java:245) 在 org.wso2.carbon.apimgt.gateway.handlers.security .keys.APIKeyValidatorClient.getAllURITemplates(APIKeyValidatorClient.java:173) ... 21 更多原因:java.lang.Exception: org.apache.axis2.databinding.ADBException: Unexpected subelement { http://model.api.apimgt. carbon.wso2.org/xsd} org.wso2.carbon.apimgt.keymgt.stub.types.axis2.GetAllURITemplatesResponse$Factory 的 org.wso2.carbon.apimgt.api.model.xsd.URITemplate$Factory.parse(URITemplate.java:3025) 的 ID。 parse(GetAllURITemplatesResponse.java:489) at org.wso2.carbon.apimgt.keymgt.stub.validator.APIKeyValidationServiceStub.fromOM(APIKeyValidationServiceStub.java:1376) ... 23 更多原因:org.apache.axis2.databinding.ADBException :意外的子元素 { http://model.api.apimgt.carbon.wso2.org/xsd }id 在 org.wso2.carbon.apimgt.api.model.xsd.URITemplate$Factory.parse(URITemplate.java:3019) ... 25 更多

我在 API Manager 中导入了 WSO2 IS-KM 的自签名证书。我正在使用 Postgre 数据库,并为 AM(WSO2AMDB)、UM(WSO2UMDB) 和 REG(WSO2CarbonDB) 创建了单独的数据库。WSO2API-M 和 WSO2IS-KM 都共享这些数据库。

请帮我解决这个问题。

NB - 当我只使用 WSO2API 管理器和它自己的密钥管理器时,我可以成功地测试从 PostMan 通过 API 网关到后端 REST 服务的 API 调用。

标签: wso2iswso2-am

解决方案


推荐阅读