Я написал службу WSo2 ESB Proxy, где служба прокси-сервера вызывает службу http, опубликованную в WSo2 API Manager. Поскольку API-интерфейсы публикуются в WSo2 API Manager для доступа к API, нам необходимо сгенерировать токен, используя ключ пользователя и секретный ключ. Я вручную вошел в wso2 api manager, я подписался на опубликованный API и с помощью моего потребительского ключа и секретного ключа я создал токен и использую этот токен при вызове API из WSo2 ESB. В заголовке запроса HTTP я установил тот токен и от WSO2 ESB способно вызывать API при получении ответа от API, но этот маркер истекает через 60 минут, поэтому мне нужно, чтобы создать маркер, вызвавДоступ к опубликованным API-интерфейсам API WSO2 API, использующим маркеры из WSO2 ESB, Не удалось получить токен доступа из диспетчера API WSO2
https://api-dev.xyz.org/token
POST
Authorization: Basic Zzc5enNRN0xLM0hOcHU2N0g2a2R1dkx6WGRrYTpJSEF1NWZUdW5FdG9BV0xfa1hCcUdvRGVPWmdh
Payload
grant_type=client_credentials
I получите ответ как
response
{
scope: "default"
token_type: "bearer"
expires_in: 3171
access_token: "db995950f960b4c67162e2d92a1117a5"
}
завитка команды, чтобы получить маркер: -
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 прокси службы я кодированный похож свернуться команду, чтобы получить маркер,
<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)
Любая идея, как решить эту проблему?
Благодарности Раджив , я могу получить токен API, сейчас каждый раз из ESB, когда я пытался сделать вызов службы http в API, сначала я делаю вызов, чтобы получить токен https://api-dev.xyz.org: 8243/token, и я использую этот токен в http-заголовке как Authorization: Bearer при вызове API. вместо этого, когда токен истек, тогда мы вызываем getToken или так или иначе хотим проверить что-то вроде ((currentTime - timestampSkew)> (issuTime + validityPeriod), если оно истинно, тогда вызывается getAccess token, любезно помогите –