WSO2: API не может аутентифицироваться в независимом шлюзе - PullRequest
0 голосов
/ 21 мая 2018

У нас проблема, аналогичная описанной в Ошибка аутентификации WSO2 на узле шлюза, на котором выполняется WSO2 AM 2.1.0 , но наша конфигурация немного отличается, и мы провели дополнительный тест

Среда: Ubuntu LTS 16.04.4 Java "1.8.0_171" (известные проблемы, о которых сообщается, см. Ниже) WSO2 2.1.0 Мы деактивировали сжатие в 3 узлах, отредактировав catalina-server.xml Дополнительно: мы повторили тесты послепонижение Java до 1.8.0_144.Те же результаты.

Мы развернули на одной машине 3 узла - 1 диспетчер запуска wso2server.sh - 2 шлюза wso2server.sh -Dprofile = запуск шлюза-менеджера - уникальный набор баз данных H2, общий для всех узлов(мы можем перестроить среду в любой момент, с нуля)

Первоначальный тест

  • Мы настроили API Key Validator с помощью Thrift.Существует только один ThriftServer, запущенный на узле менеджера
  • Ключ ключа API Validator API (изменено реальное имя хоста на example.com)

        <APIKeyValidator>
        <ServerURL>https://apimanager.example.com:9443/services/</ServerURL>
        <Username>${admin.username}</Username>
        <Password>${admin.password}</Password>
        <KeyValidatorClientType>ThriftClient</KeyValidatorClientType>
        <ThriftClientConnectionTimeOut>10000</ThriftClientConnectionTimeOut>
        <EnableThriftServer>true</EnableThriftServer>
        <ThriftServerHost>apimanager.example.com</ThriftServerHost>
        <ThriftClientPort>10397</ThriftClientPort>
        <KeyValidationHandlerClassName>org.wso2.carbon.apimgt.keymgt.handlers.DefaultKeyValidationHandler</KeyValidationHandlerClassName>
        </APIKeyValidator>
    
  • Ключи узла песочницы и шлюза Key Key Validator имеют одинаковую конфигурацию, за исключением того, что параметр <EnableThriftServer> равен false

Результат теста В консоли API мы получаем(мы используем пример PizzaShack API в GET / меню)

{ "fault": { "code": 900900, "message": "Unclassified Authentication Failure", "description": "Error while accessing backend services for API key validation" } }

Трассировка шлюза

TID: [-1234] [] [2018-05-21 13:15:17,351]  WARN {org.wso2.carbon.apimgt.gateway.handlers.security.thrift.ThriftKeyValidatorClient} -  Login failed.. Authenticating again.. {org.wso2.carbon.apimgt.gateway.handlers.security.thrift.ThriftKeyValidatorClient}
TID: [-1234] [] [2018-05-21 13:15:17,392]  WARN {org.wso2.carbon.apimgt.gateway.handlers.security.APIAuthenticationHandler} -  API authentication failure due to Unclassified Authentication Failure {org.wso2.carbon.apimgt.gateway.handlers.security.APIAuthenticationHandler}

Трассировка менеджера (консоль API)

TID: [-1234] [] [2018-05-21 13:15:17,372]  INFO {org.wso2.carbon.core.services.util.CarbonAuthenticationUtil} -  'admin@carbon.super [-1234]' logged in at [2018-05-21 13:15:17,372+0200] from IP address  {org.wso2.carbon.core.services.util.CarbonAuthenticationUtil}

Тест с включенной отладкой

Тест с отладкой невозможен из-за предыдущей ошибки (см. Комментарий Bee ниже)

Дополнительноtests

  • Следуя советам оригинального поста, мы изменили APIKeyValidator на WSClient.После некоторой проблемы с начальной настройкой все работает нормально
  • Мы попытались также вызвать CURL, без изменений.
...