Oauth 2.0 混合网关环境中的WSO2始终路由到沙箱URL,即使与生产访问令牌一起使用也是如此
我正在使用WSO2 APIM 3.0.0版本&我已经使用现有的招摇过市定义在WSO2中发布了一个API 我使用的是一个混合网关环境,“生产”和“沙盒”URL配置为不同的代码环境(出于测试目的,“生产”URL点击我们的qa框,“沙盒”点击我的本地环境)。我刚刚注意到WSO2总是将调用路由到沙盒环境(我的本地),即使我使用“生产”访问令牌 除了从devportal为prod和sandbox生成不同的访问令牌以将其路由到所需的环境之外,我还需要做其他事情吗 这是否意味着我必须始终为不同的环境提供不同的网关 我使用OAUTH和JWT令牌类型以及不同的授权机制对此进行了测试,但它仍然执行相同的操作 按要求附上synapse配置:Oauth 2.0 混合网关环境中的WSO2始终路由到沙箱URL,即使与生产访问令牌一起使用也是如此,oauth-2.0,wso2,access-token,hybrid,Oauth 2.0,Wso2,Access Token,Hybrid,我正在使用WSO2 APIM 3.0.0版本&我已经使用现有的招摇过市定义在WSO2中发布了一个API 我使用的是一个混合网关环境,“生产”和“沙盒”URL配置为不同的代码环境(出于测试目的,“生产”URL点击我们的qa框,“沙盒”点击我的本地环境)。我刚刚注意到WSO2总是将调用路由到沙盒环境(我的本地),即使我使用“生产”访问令牌 除了从devportal为prod和sandbox生成不同的访问令牌以将其路由到所需的环境之外,我还需要做其他事情吗 这是否意味着我必须始终为不同的环境提供不同的
<?xml version="1.0" encoding="UTF-8"?><api xmlns="http://ws.apache.org/ns/synapse" name="admin--XXXBackendPlatform" context="/WSO2/1.0.0" version="1.0.0" version-type="context">
<resource methods="POST" url-mapping="xxxxx" faultSequence="fault">
<inSequence>
<property name="api.ut.backendRequestTime" expression="get-property('SYSTEM_TIME')"/>
<filter source="$ctx:AM_KEY_TYPE" regex="SANDBOX">
<then>
<send>
<endpoint key="XXXBackendPlatform--v1.0.0_APIsandboxEndpoint"/>
</send>
</then>
<else>
<sequence key="_production_key_error_"/>
</else>
</filter>
</inSequence>
<outSequence>
<class name="org.wso2.carbon.apimgt.gateway.handlers.analytics.APIMgtResponseHandler"/>
<send/>
</outSequence>
</resource>
<handlers>
<handler class="org.wso2.carbon.apimgt.gateway.handlers.common.APIMgtLatencyStatsHandler">
<property name="apiUUID" value="6535a4b7-759b-4f0e-8980-eab80aaee847"/>
</handler>
<handler class="org.wso2.carbon.apimgt.gateway.handlers.security.CORSRequestHandler">
<property name="apiImplementationType" value="ENDPOINT"/>
<property name="AuthorizationHeader" value="WSO2_Auth"/>
</handler>
<handler class="org.wso2.carbon.apimgt.gateway.handlers.security.APIAuthenticationHandler">
<property name="RemoveOAuthHeadersFromOutMessage" value="true"/>
<property name="APILevelPolicy" value="Unlimited"/>
<property name="AuthorizationHeader" value="WSO2_Auth"/>
<property name="CertificateInformation" value="{}"/>
<property name="APISecurity" value="oauth2,oauth_basic_auth_api_key_mandatory"/>
<property name="apiUUID" value="6535a4b7-759b-4f0e-8980-eab80aaee847"/>
</handler>
<handler class="org.wso2.carbon.apimgt.gateway.handlers.throttling.ThrottleHandler"/>
<handler class="org.wso2.carbon.apimgt.gateway.handlers.analytics.APIMgtUsageHandler"/>
<handler class="org.wso2.carbon.apimgt.gateway.handlers.analytics.APIMgtGoogleAnalyticsTrackingHandler">
<property name="configKey" value="gov:/apimgt/statistics/ga-config.xml"/>
</handler>
<handler class="org.wso2.carbon.apimgt.gateway.handlers.ext.APIManagerExtensionHandler"/>
</handlers>
</api>
根据下面的部分,您只在API中配置了一个沙盒端点。如果使用生产密钥访问API,应该会出现错误
<filter source="$ctx:AM_KEY_TYPE" regex="SANDBOX">
<then>
<send>
<endpoint key="XXXBackendPlatform--v1.0.0_APIsandboxEndpoint"/>
</send>
</then>
<else>
<sequence key="_production_key_error_"/>
</else>
</filter>
请附上API和端点的synapse文件。请删除后端端点url。上面添加了请检查好,我可能在最初发布此问题后进行了更改。我将在混合环境中复制此问题,并根据要求共享相关synapse文件。