API портала разработчика: возврат 401 - PullRequest
0 голосов
/ 06 августа 2020

Я следую последнему примеру продуктов / интернет-магазина здесь: https://github.com/wso2/k8s-api-operator. Я генерирую ключ через портал и запускаю «https://wso2apim: 32003 / store / v1.0.0 / products», который возвращает 401

Журналы показывают:

[2020-08-05 22:39:44,698] WARN - SourceHandler I/O error: Received fatal alert: certificate_unknown
[2020-08-05 22:39:45,100] ERROR - ServerWorker Error processing GET request for : /store/v1.0.0/products.
java.lang.NullPointerException: null
at org.wso2.carbon.apimgt.gateway.handlers.security.TestKeyAuthenticator.handleRequest_aroundBody4(TestKeyAuthenticator.java:76) ~[org.wso2.carbon.apimgt.gateway_6.7.78.jar:?]
at org.wso2.carbon.apimgt.gateway.handlers.security.TestKeyAuthenticator.handleRequest(TestKeyAuthenticator.java:65) ~[org.wso2.carbon.apimgt.gateway_6.7.78.jar:?]
at org.apache.synapse.rest.API.process(API.java:368) ~[synapse-core_2.1.7.wso2v168.jar:2.1.7-wso2v168]
at org.apache.synapse.rest.RESTRequestHandler.apiProcessNonDefaultStrategy(RESTRequestHandler.java:149) ~[synapse-core_2.1.7.wso2v168.jar:2.1.7-wso2v168]
at org.apache.synapse.rest.RESTRequestHandler.dispatchToAPI(RESTRequestHandler.java:95) ~[synapse-core_2.1.7.wso2v168.jar:2.1.7-wso2v168]
at org.apache.synapse.rest.RESTRequestHandler.process(RESTRequestHandler.java:71) ~[synapse-core_2.1.7.wso2v168.jar:2.1.7-wso2v168]
at org.apache.synapse.core.axis2.Axis2SynapseEnvironment.injectMessage(Axis2SynapseEnvironment.java:331) ~[synapse-core_2.1.7.wso2v168.jar:2.1.7-wso2v168]
at org.apache.synapse.core.axis2.SynapseMessageReceiver.receive(SynapseMessageReceiver.java:99) ~[synapse-core_2.1.7.wso2v168.jar:2.1.7-wso2v168]
at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180) ~[axis2_1.6.1.wso2v41.jar:?]
at org.apache.synapse.transport.passthru.ServerWorker.processNonEntityEnclosingRESTHandler(ServerWorker.java:366) [synapse-nhttp-transport_2.1.7.wso2v168.jar:?]
at org.apache.synapse.transport.passthru.ServerWorker.run(ServerWorker.java:187) [synapse-nhttp-transport_2.1.7.wso2v168.jar:?]
at org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:172) [axis2_1.6.1.wso2v41.jar:?]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
at java.lang.Thread.run(Thread.java:834) [?:?]
[2020-08-05 22:39:45,100] ERROR - NativeWorkerPool Uncaught exception
java.lang.NullPointerException: null
at org.apache.synapse.transport.passthru.Pipe$ByteBufferInputStream.waitForData(Pipe.java:501) ~[synapse-nhttp-transport_2.1.7.wso2v168.jar:?]
at org.apache.synapse.transport.passthru.Pipe$ByteBufferInputStream.read(Pipe.java:473) ~[synapse-nhttp-transport_2.1.7.wso2v168.jar:?]
at java.io.InputStream.read(InputStream.java:205) ~[?:?]
at org.apache.commons.io.IOUtils.copyLarge(IOUtils.java:1792) ~[commons-io_2.4.0.wso2v1.jar:?]
at org.apache.commons.io.IOUtils.copyLarge(IOUtils.java:1769) ~[commons-io_2.4.0.wso2v1.jar:?]
at org.apache.commons.io.IOUtils.copy(IOUtils.java:1744) ~[commons-io_2.4.0.wso2v1.jar:?]
at org.apache.synapse.transport.passthru.util.RelayUtils.consume(RelayUtils.java:465) ~[synapse-nhttp-transport_2.1.7.wso2v168.jar:?]
at org.apache.synapse.transport.passthru.util.RelayUtils.consumeAndDiscardMessage(RelayUtils.java:485) ~[synapse-nhttp-transport_2.1.7.wso2v168.jar:?]
at org.apache.synapse.transport.passthru.ServerWorker.consumeInputOnException(ServerWorker.java:385) ~[synapse-nhttp-transport_2.1.7.wso2v168.jar:?]
at org.apache.synapse.transport.passthru.ServerWorker.handleException(ServerWorker.java:598) ~[synapse-nhttp-transport_2.1.7.wso2v168.jar:?]
at org.apache.synapse.transport.passthru.ServerWorker.processNonEntityEnclosingRESTHandler(ServerWorker.java:373) ~[synapse-nhttp-transport_2.1.7.wso2v168.jar:?]
at org.apache.synapse.transport.passthru.ServerWorker.run(ServerWorker.java:187) ~[synapse-nhttp-transport_2.1.7.wso2v168.jar:?]
at org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:172) [axis2_1.6.1.wso2v41.jar:?]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
at java.lang.Thread.run(Thread.java:834) [?:?]

Любые предложения приветствуются

1 Ответ

0 голосов
/ 06 августа 2020

Когда вы пробуете это с DevPortal, запрос отправляется на шлюз Synapse, а не на микрошлюз. Вы можете использовать сгенерированный токен из Devportal и использовать его для доступа к API с помощью команды curl, указывающей на конечную точку в K8s.

curl -X GET "https://IP:9095/store/v1.0.0/products" -H "Authorization:Bearer $TOKEN" -k

Если вы хотите получить доступ к API из Devportal, вам понадобится предоставить API в режиме Ingress [1] для обработки COR. Затем, используя портал администратора, вы можете создать метку, и при публикации API вы можете назначить эту метку шлюзу. Когда вы заходите на портал разработчиков, вы видите ярлык вместе с именем хоста. Таким образом, вы можете получить доступ к API с портала разработчиков. Пример сценария можно найти в [2], связанный с примером Istio.

[1] - https://github.com/wso2/k8s-api-operator/tree/master/scenarios/scenario-17

[2] - https://github.com/pubudu538/demos/tree/master/S06-Promote_API_from_Private_to_Public_Istio

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...