WSO2 APIM 无法从商店创建访问令牌
WSO2 APIM unable to create an access token from the store
我们在一些代理服务器后面部署了 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
我假设某些代理服务(我们可能无法直接控制)returns HTTP 301 在生成令牌时。
我想看看 URL 是用来自 AMDefaultKeyManagerImpl 的什么数据真正调用的,并检查真正返回的是什么。
我无法找到 AMDefaultKeyManagerImpl 或 APIStoreHostObject,也找不到真正调用的端点。
感谢您的任何提示/建议
编辑:
我找到了实现 here 尽管它在不同的包中(更新版本?)。
在此处检索端点:
String tokenEndpoint =
ServiceReferenceHolder.getInstance().getAPIMConfiguration()
.getKeyManagerConfigs().getTokenEndpoint();
虽然不知道端点是如何计算的(APIKeyManager 部分被注释为您假设使用本地/自助服务,它在另一个环境中工作)
生成应用密钥或应用访问令牌时出现异常,这里是stacktrace。
当客户端调用 HTTP 端点时,我看到可能的 301 响应,尽管我到处都只看到 https 配置
<RevokeAPIURL>https://api.xxxxxx:443/api/revoke</RevokeAPIURL>
其中 /api 在代理服务器上映射到 axis2 http 端口,如果网关
解析:
令牌端点源自 RevokeAPIURL 参数(如果未定义单独的 KeyManager,请将 "revoke" 替换为 "token" 字符串)。该实现向具有主机 header 的端点发送正确的 HTTP(S) 请求。问题出在使用主机 header
时代理服务配置路由不正确
确保在 api-manager.xml
中正确配置撤销 url
<RevokeAPIURL>https://${GATEWAY_SERVER_HOST}:{port}/revoke</RevokeAPIURL>
您可以为 ${GATEWAY_SERVER_HOST}
和 {port}
输入实际值。
关注此 blog。还要确保您没有任何违反约束的重复记录。这主要发生在将 wso2-am 从 1.9.0 迁移到 2.1.0 时。
我们在一些代理服务器后面部署了 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
我假设某些代理服务(我们可能无法直接控制)returns HTTP 301 在生成令牌时。
我想看看 URL 是用来自 AMDefaultKeyManagerImpl 的什么数据真正调用的,并检查真正返回的是什么。
我无法找到 AMDefaultKeyManagerImpl 或 APIStoreHostObject,也找不到真正调用的端点。
感谢您的任何提示/建议
编辑:
我找到了实现 here 尽管它在不同的包中(更新版本?)。
在此处检索端点:
String tokenEndpoint =
ServiceReferenceHolder.getInstance().getAPIMConfiguration()
.getKeyManagerConfigs().getTokenEndpoint();
虽然不知道端点是如何计算的(APIKeyManager 部分被注释为您假设使用本地/自助服务,它在另一个环境中工作)
生成应用密钥或应用访问令牌时出现异常,这里是stacktrace。
当客户端调用 HTTP 端点时,我看到可能的 301 响应,尽管我到处都只看到 https 配置
<RevokeAPIURL>https://api.xxxxxx:443/api/revoke</RevokeAPIURL>
其中 /api 在代理服务器上映射到 axis2 http 端口,如果网关
解析:
令牌端点源自 RevokeAPIURL 参数(如果未定义单独的 KeyManager,请将 "revoke" 替换为 "token" 字符串)。该实现向具有主机 header 的端点发送正确的 HTTP(S) 请求。问题出在使用主机 header
时代理服务配置路由不正确确保在 api-manager.xml
<RevokeAPIURL>https://${GATEWAY_SERVER_HOST}:{port}/revoke</RevokeAPIURL>
您可以为 ${GATEWAY_SERVER_HOST}
和 {port}
输入实际值。
关注此 blog。还要确保您没有任何违反约束的重复记录。这主要发生在将 wso2-am 从 1.9.0 迁移到 2.1.0 时。