WSO2 APIM无法从存储创建访问令牌

WSO2 APIM无法从存储创建访问令牌,wso2,wso2-am,Wso2,Wso2 Am,我们在一些代理服务器后面部署了WSO2 APIM(2.0.0)。在创建应用程序或从存储生成访问令牌时,我们遇到以下异常: ERROR {org.wso2.carbon.apimgt.impl.utils.APIUtil} - Error occurred while executing SubscriberKeyMgtClient. {o rg.wso2.carbon.apimgt.impl.utils.APIUtil} java.lang.RuntimeException: Error o

我们在一些代理服务器后面部署了WSO2 APIM(2.0.0)。在创建应用程序或从存储生成访问令牌时,我们遇到以下异常:

 ERROR {org.wso2.carbon.apimgt.impl.utils.APIUtil} -  Error occurred while executing SubscriberKeyMgtClient. {o
rg.wso2.carbon.apimgt.impl.utils.APIUtil}
java.lang.RuntimeException: Error occurred while calling token endpoint: HTTP error code : 301
        at org.wso2.carbon.apimgt.impl.AMDefaultKeyManagerImpl.getNewApplicationAccessToken(AMDefaultKeyManagerImpl.java:367)
        at org.wso2.carbon.apimgt.impl.workflow.AbstractApplicationRegistrationWorkflowExecutor.dogenerateKeysForApplication(AbstractApplicationRegistra
tionWorkflowExecutor.java:151)
        at org.wso2.carbon.apimgt.impl.workflow.AbstractApplicationRegistrationWorkflowExecutor.generateKeysForApplication(AbstractApplicationRegistrati
onWorkflowExecutor.java:118)
        at org.wso2.carbon.apimgt.impl.workflow.ApplicationRegistrationSimpleWorkflowExecutor.complete(ApplicationRegistrationSimpleWorkflowExecutor.jav
a:78)
        at org.wso2.carbon.apimgt.impl.workflow.ApplicationRegistrationSimpleWorkflowExecutor.execute(ApplicationRegistrationSimpleWorkflowExecutor.java
:54)
        at org.wso2.carbon.apimgt.impl.APIConsumerImpl.requestApprovalForApplicationRegistration(APIConsumerImpl.java:2789)
        at org.wso2.carbon.apimgt.impl.UserAwareAPIConsumer.requestApprovalForApplicationRegistration(UserAwareAPIConsumer.java:36)
        at org.wso2.carbon.apimgt.hostobjects.APIStoreHostObject.jsFunction_getApplicationKey(APIStoreHostObject.java:385)

...
Caused by: java.lang.RuntimeException: Error occurred while calling token endpoint: HTTP error code : 301
            at org.wso2.carbon.apimgt.impl.AMDefaultKeyManagerImpl.getNewApplicationAccessToken(AMDefaultKeyManagerImpl.java:367)
            at org.wso2.carbon.apimgt.impl.workflow.AbstractApplicationRegistrationWorkflowExecutor.dogenerateKeysForApplication(AbstractApplicationRegistra
我假设一些代理服务(我们可能无法直接控制)在生成令牌时返回HTTP 301

我想看看使用来自AMDefaultKeyManagerImpl的数据调用了什么URL,并检查实际返回的内容

我找不到AMDefaultKeyManagerImpl或APIStoreHostObject,也找不到真正调用的端点

谢谢你的提示/建议

编辑:

我发现了实现,尽管它在不同的包中(更新版本?)

在此处检索端点:

String tokenEndpoint = 
ServiceReferenceHolder.getInstance().getAPIMConfiguration()
   .getKeyManagerConfigs().getTokenEndpoint();
虽然不知道端点是如何计算的(假设您使用本地/自助服务,APIKeyManager部分会被注释,它正在另一个环境中工作)

生成应用程序密钥或应用程序访问令牌时会遇到异常,下面是示例

当客户端调用HTTP端点时,我看到可能的301响应,尽管我到处都只看到https配置

<RevokeAPIURL>https://api.xxxxxx:443/api/revoke</RevokeAPIURL>
https://api.xxxxxx:443/api/revoke
其中/api在代理服务器上映射到axis2 http端口(如果网关

分辨率:


令牌端点由RevokeAPIURL参数派生(如果未定义单独的KeyManager,则将“revoke”替换为“token”字符串)。该实现使用主机头向端点发送正确的HTTP(S)请求。当使用主机头时,问题出在代理服务配置路由错误上

请确保在
api manager.xml

<RevokeAPIURL>https://${GATEWAY_SERVER_HOST}:{port}/revoke</RevokeAPIURL>
https://${GATEWAY\u SERVER\u HOST}:{port}/revoke

您可以为
${GATEWAY\u SERVER\u HOST}
{port}

设置实际值,确保在
api manager.xml

<RevokeAPIURL>https://${GATEWAY_SERVER_HOST}:{port}/revoke</RevokeAPIURL>
https://${GATEWAY\u SERVER\u HOST}:{port}/revoke

您可以将
${GATEWAY\u SERVER\u HOST}
{port}

的实际值放在下面。还要确保没有任何违反约束的重复记录。这主要发生在将wso2 am从1.9.0迁移到2.1.0的过程中。

遵循以下步骤。还要确保没有任何违反约束的重复记录。这主要发生在将wso2 am从1.9.0迁移到2.1.0的过程中。

RevokeAPIURL定义良好,可以从外部访问:/我刚才看到您说过创建应用程序也会失败。你可以发布日志吗?它是创建应用程序的日志。顶部堆栈跟踪是不同的,但我发现原因也是getNewApplicationAccessToken。我会在你调用
https://api.xxxxxx:443/api/token
并生成一个新的令牌?事实上,令牌生成得很好。我甚至认为SNI(多个SSL证书)是一个因素,但如果这是一个问题,我们会得到SSL异常,而不是301。RevokeAPIURL定义良好,可以从外部访问:/我刚刚看到您说过创建应用程序也会失败。你可以发布日志吗?它是创建应用程序的日志。顶部堆栈跟踪是不同的,但我发现原因也是getNewApplicationAccessToken。我会在你调用
https://api.xxxxxx:443/api/token
并生成一个新的令牌?事实上,令牌生成得很好。我甚至认为SNI(多个SSL证书)是一个因素,但如果这是一个问题,我们将得到SSL异常,而不是301。正确的类是
APIM 2.0.0
git标记是
v6.0.4
@Bhathiya谢谢,我将检查正确的类是
APIM 2.0.0
git标记是
v6.0.4
@Bhathiya谢谢你,我会感谢你的努力。尽管问题已经解决-由于反向代理设置感谢您的努力,
revoke
端点无法访问。尽管问题已经解决-由于反向代理设置,
revoke
端点无法访问