我已经编写了WSo2 ESB代理服务,其中代理服务调用了在WSo2 API管理器中发布的http服务。由于API是在WSo2 API管理器中发布的以访问API,因此我们需要使用使用者密钥和秘密密钥来生成令牌。我手动登录到wso2 api管理器,我订阅了已发布的API,并使用我的使用者密钥和私有密钥生成了令牌,并在从WSo2 ESB调用API时使用了该令牌。在http请求标头中,我设置了那些令牌,并从WSo2 ESB设置了能够调用API的API,以从API获得响应,但是此令牌将在60分钟后过期,因此我需要通过调用
来生成令牌https://api-dev.xyz.org/token
POST
Authorization: Basic Zzc5enNRN0xLM0hOcHU2N0g2a2R1dkx6WGRrYTpJSEF1NWZUdW5FdG9BV0xfa1hCcUdvRGVPWmdh
Payload
grant_type=client_credentials
我会以]的形式答复>
response { scope: "default" token_type: "bearer" expires_in: 3171 access_token: "db995950f960b4c67162e2d92a1117a5" }
获取令牌的curl命令:-
curl -k -d "grant_type=client_credentials" -H "Authorization: Basic Rnl5YmwwNVhacGhBb01mVE5VNE91ZkxfblRVYTpUSmt6QUJFbzZaN3FkNkE1cHE3V3JSd2ZNaHNh, Content-Type: application/x-www-form-urlencoded" https://api-dev.xyz.org:8243/token
在WSo2 ESB代理服务中,我已编码类似于curl命令来获取令牌,
<property xmlns:ns="http://org.apache.synapse/xsd" name="Authorization" expression="fn:concat('Basic ',OUU0Zk05eU81R0VCcV9odUxBYW15SzRCaEZFYToxVmVnbHl5OFBhQTkyMFRxbEUySnduWHlTbThh)" scope="transport"/> <payloadFactory media-type="json"> <format> { "grant_type":"client_credentials" } </format> </payloadFactory> <property name="messageType" value="application/x-www-form-urlencoded" scope="axis2"/> <send> <endpoint> <http method="get" uri-template="https://api-dev.xyz.org:8243/token"/> <property name="grant_type" value="client_credentials"/> </endpoint> </send>
我得到的回复为>>
TargetHandler I/O error: Host name verification failed for host : 172.18.65.251 javax.net.ssl.SSLException: Host name verification failed for host : 172.18.65.251 at org.apache.synapse.transport.http.conn.ClientSSLSetupHandler.verify(ClientSSLSetupHandler.java:162) at org.apache.http.nio.reactor.ssl.SSLIOSession.doHandshake(SSLIOSession.java:291) at org.apache.http.nio.reactor.ssl.SSLIOSession.isAppInputReady(SSLIOSession.java:391) at org.apache.http.impl.nio.reactor.AbstractIODispatch.inputReady(AbstractIODispatch.java:119) at org.apache.http.impl.nio.reactor.BaseIOReactor.readable(BaseIOReactor.java:159) at org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvent(AbstractIOReactor.java:338) at org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvents(AbstractIOReactor.java:316) at org.apache.http.impl.nio.reactor.AbstractIOReactor.execute(AbstractIOReactor.java:277) at org.apache.http.impl.nio.reactor.BaseIOReactor.execute(BaseIOReactor.java:105) at org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor$Worker.run(AbstractMultiworkerIOReactor.java:586) at java.lang.Thread.run(Thread.java:745)
任何想法如何解决此问题?
我已经编写了WSo2 ESB代理服务,其中代理服务调用了在WSo2 API管理器中发布的http服务。因为API是在WSo2 API管理器中发布的,以访问API,所以我们...
这是证书验证问题。当服务器找不到主机的相应证书时,就会发生这种情况。您可以尝试以下方法之一来解决此问题:
面对同样的问题,我厌倦了与上面相同的代码,但是对我来说不起作用,请可以