Диспетчер API WSO2 - тип аутентификации None приводит к исключению APISecurityException

Я пытаюсь использовать свой API через пользовательский интерфейс Swagger через диспетчер API WSO2: Me->Browser->SwaggerUI->WSO2->MyBackend

Теперь у меня возникла проблема, которую всегда дает мне пользовательский интерфейс Swagger:

{  "error": "no response from server" }

Я проводил некоторые исследования и выяснил, что проблема здесь связана с CORS. Пока я пытаюсь выполнить запрос GET, Firefox сначала отправляет запрос OPTION (из-за CORS) на шлюз WSO2.

Теперь тот же сценарий объясняется и описывается здесь:

https://wso2.org/jira/browse/APIMANAGER-1819

Решение/обходные пути, описанные в ссылках, заключаются в том, что в издателе API вам необходимо создать конечную точку для запрошенного ресурса с помощью метода OPTION и установить для типа аутентификации этой конечной точки OPTION значение «none».

Однако это не работает для меня, так как я получаю исключение в WSO при передаче запроса.

  1. HTTP-запрос, поступающий в WSO2:

TID: [0] [AM] [2015-05-07 09:32:50,707] DEBUG {org.apache.synapse.transport.http.wire} - >> "ВАРИАНТЫ /bankapi/v1/cashAccounts HTTP/1.1[\ r][\n]" {org.apache.synapse.transport.http.wire} TID: [0] [AM] [2015-05-07 09:32:50,707] DEBUG {org.apache.synapse.transport. http.wire} -> "Хост: 10.88.13.104:8243[\r][\n]" {org.apache.synapse.transport.http.wire} TID: [0] [AM] [2015-05- 07 09:32:50,707] DEBUG {org.apache.synapse.transport.http.wire} -> "User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:37.0) Gecko/20100101 Firefox/37.0[ \r][\n]" {org.apache.synapse.transport.http.wire} TID: [0] [AM] [2015-05-07 09:32:50,707] DEBUG {org.apache.synapse.transport .http.wire} - >> "Принять: text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8[\r][\n]" {org.apache.synapse.transport.http.wire} TID: [0] [AM] [2015-05-07 09:32:50,708] DEBUG {org.apache.synapse.transport.http.wire} - >> "Accept-Language: en-US,en;q=0.5[\r][\n]" {org.apache.synapse.transport.http.wire} TID: [0] [AM] [2015-05-07 09:32:50,708] DEBUG {org.apache.synapse.transport.http.wire} - >> "Accept-Encoding: gzip, deflate[\r][\n]" { org.apache.synapse.transport.http.wire} TID: [0] [AM] [2015-05-07 09:32:50,708] DEBUG {org.apache.synapse.transport.http.wire} - >> " Происхождение: http://10.88.13.104:8080[\r][\n]" {org.apache .synapse.transport.http.wire} TID: [0] [AM] [2015-05-07 09:32:50,708] DEBUG {org.apache.synapse.transport.http.wire} — >> «Контроль доступа -Метод запроса: GET[\r][\n]" {org.apache.synapse.transport.http.wire} TID: [0] [AM] [2015-05-07 09:32:50,708] DEBUG { org.apache.synapse.transport.http.wire} -> "Соединение: keep-alive[\r][\n]" {org.apache.synapse.transport.http.wire} TID: [0] [AM ] [2015-05-07 09:32:50,708] DEBUG {org.apache.synapse.transport.http.wire} - >> "[\r][\n]" {org.apache.synapse.transport.http .провод}

  1. Исключение и трассировка стека:

TID: [0] [AM] [2015-05-07 09:32:50,878] ОШИБКА {org.wso2.carbon.apimgt.gateway.handlers.security.APIAuthenticationHandler} — ошибка аутентификации API {org.wso2.carbon.apimgt .gateway.handlers.security.APIAuthenticationHandler} org.wso2.carbon.apimgt.gateway.handlers.security.APISecurityException: Ошибка доступа к API: /bankapi, версия: v1 с ключом: null в org.wso2.carbon.apimgt.gateway .handlers.security.oauth.OAuthAuthenticator.authenticate(OAuthAuthenticator.java:212) в org.wso2.carbon.apimgt.gateway.handlers.security.APIAuthenticationHandler.handleRequest(APIAuthenticationHandler.java:94) в org.apache.synapse.rest .API.process(API.java:284) в org.apache.synapse.rest.RESTRequestHandler.dispatchToAPI(RESTRequestHandler.java:83) в org.apache.synapse.rest.RESTRequestHandler.process(RESTRequestHandler.java:64) в org.apache.synapse.core.axis2.Axis2SynapseEnvironment.injectMessage(Axis2SynapseEnvironment.java:220) на org.apache.synapse.co re.axis2.SynapseMessageReceiver.receive(SynapseMessageReceiver.java:83) в org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180) в org.apache.synapse.transport.passthru.ServerWorker.processNonEntityEnclosingRESTHandler(ServerWorker. java:344) в org.apache.synapse.transport.passthru.ServerWorker.run(ServerWorker.java:168) в org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:172) в java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) в java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) в java.lang.Thread.run(Thread.java:724)

Важным здесь является то, что 2... возникает ошибка при аутентификации, даже если тип аутентификации отсутствует, и аутентификация всегда должна быть успешной. Запрос даже не перенаправляется на серверную часть (поэтому мой вопрос не является дубликатом, но в основе лежит совсем другая проблема).

Я использую WSO2 API Manager версии 1.8.0 в Windows (бинарный пакет, который вы можете скачать на сайте WSO2). Вы можете помочь мне здесь? Я что-то упускаю? Это обычный баг (мне так кажется)?


person wolf    schedule 07.05.2015    source источник
comment
возможный дубликат междоменных проблем с WSO2 API Manager   -  person Abimaran Kugathasan    schedule 08.05.2015
comment
Я не думаю, что это дубликат. В принятом ответе предлагается указать метод OPTION для ресурса с типом аутентификации none, что я и сделал. В результате проблема в этом разделе заключалась в том, что серверная часть не поддерживает метод OPTION. Моя проблема, напротив (как сообщает журнал), заключается в том, что WSO2 выдает исключение аутентификации (несмотря на тип аутентификации none) и даже не отправляет запрос на серверную часть.   -  person wolf    schedule 08.05.2015