WSO2 API管理器-“;将此设置为默认版本";导致身份验证错误?
我有一个API,如果没有选中“将此设置为默认版本”复选框,则可以正常工作,一旦选中,我就会返回此错误WSO2 API管理器-“;将此设置为默认版本";导致身份验证错误?,api,wso2,wso2carbon,wso2-am,Api,Wso2,Wso2carbon,Wso2 Am,我有一个API,如果没有选中“将此设置为默认版本”复选框,则可以正常工作,一旦选中,我就会返回此错误 <ams:fault xmlns:ams="http://wso2.org/apimanager/security"> <ams:code>900906</ams:code> <ams:message>No matching resource found in the API for the given request&l
<ams:fault
xmlns:ams="http://wso2.org/apimanager/security">
<ams:code>900906</ams:code>
<ams:message>No matching resource found in the API for the given request</ams:message>
<ams:description>Access failure for API: xxxx/xxxx, version: v0.1 with key: xxxxxx</ams:description>
</ams:fault>
900906
在API中找不到与给定请求匹配的资源
访问API:xxxx/xxxx的失败,版本:v0.1,密钥:xxxxxx
有什么我错过的吗
谢谢
灰烬
编辑-额外细节和日志
TID[-1234][AM][2014-07-10 13:05:56238]错误
{org.wso2.carbon.apimgt.gateway.handlers.security.APIAuthenticationHandler}
-API身份验证失败org.wso2.carbon.apimgt.gateway.handlers.security.oauth.OAuthAuthenticator.authenticate(OAuthAuthenticator.java:157)
org.wso2.carbon.apimgt.gateway.handlers.security.APIAuthenticationHandler.HandlerRequest(APIAuthenticationHandler.java:92)
org.apache.synapse.rest.API.process(API.java:285)
org.apache.synapse.rest.RESTRequestHandler.dispatchToAPI(RESTRequestHandler.java:83)
org.apache.synapse.rest.RESTRequestHandler.process(RESTRequestHandler.java:64)
org.apache.synapse.core.axis2.Axis2SynapseEnvironment.injectMessage(Axis2SynapseEnvironment.java:220)
org.apache.synapse.core.axis2.SynapseMessageReceiver.receive(SynapseMessageReceiver.java:83)
org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180)
org.apache.synapse.transport.passthru.ServerWorker.processnonentityenclosuringresthandler(ServerWorker.java:344)
org.apache.synapse.transport.passthru.ServerWorker.run(ServerWorker.java:168)
org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:172)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
run(Thread.java:744)
对API进行更改后,请保存并发布API。这可能是问题的根源
发布后,您应该会看到两组产品url(一个有版本,一个没有版本)。请检查API存储区中是否有相同的API 首先要在该环境中打开wire日志,方法是编辑../repository/conf/log4j.properties文件并重新启动服务。这将允许您查看对网关的初始请求和从网关到自身(或集群中的其他网关)的请求的请求头,因为这是对默认API版本的请求的解析方式。这可以帮助您确定您的授权头值是否实际发送到身份验证处理程序 看了之后,请注意,当发布具有默认版本的API时,实际上是在为API创建(或更新)两个单独的synapse配置:版本化配置和未版本化配置。后者定义中需要检查的部分是:
<else>
<header name="WSO2_AM_API_DEFAULT_VERSION" scope="transport" value="true"/>
<property name="uri.var.portnum" expression="get-property('https.nio.port')"/>
<send>
<endpoint>
<http uri-template="https://localhost:{uri.var.portnum}/myApi/v1">
<timeout>
<duration>60000</duration>
<responseAction>fault</responseAction>
</timeout>
</http>
</endpoint>
</send>
</else>
60000
过错
默认情况下,新生成的默认版本定义会尝试将请求发送到localhost,这可能不是您想要的。检查../repository/deployment/synapse configs/default/api,确保此定义正确
因为看起来这实际上是一个身份验证错误,所以您还应该测试一个新订阅。使用一些订阅者创建一个新的应用程序,订阅API,并生成新的访问令牌。我不明白为什么(因为设置默认版本不会在AM_API表中创建新的API条目),但这可能是因为访问令牌凭据对于默认版本无效,并且生成新令牌(理论上)应该对此进行测试。Hi Nadeesha,实际上我已经这样做了,并且看到存储中有两个URL,但是这两个URL都不起作用,并且都失败了,出现了相同的错误(为了论证起见,我刚刚尝试了,但它们仍然不起作用)。然而,只要我将API更改为非默认API,版本化的API就会工作。我在问题中增加了碳记录的细节,这是否有帮助?谢谢,阿什。我尝试了生产和沙盒凭据,沙盒是我正在使用的,没有默认复选框也可以使用,但复选框后相同的身份验证密钥不起作用。同样适用于我。我不确定这个问题的原因是什么