WSO2 + NGINX — проблема с доступом к созданным API

Ситуация:

Окружающая среда: 1 сервер: Oracle Linux Микроинтегратор 4.1.0 работает API-менеджер 4.1.0 работает Доступ к сайтам администратора, издателя, DevPortal можно получить как на сервере, так и в локальной сети. Доступ к API, который я создал с помощью oauth2 (авторизация + токен), можно получить в локальной сети (через Postman).

СЕЙЧАС... Я хочу открыть этот API в Интернете. Моя ИТ-команда добавила следующее в файл конфигурации сервера DMZ (NGINX), где oauth2 должен вызывать службы аутентификации, а dsFenicio — это API.

    location /oauth2 {
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_pass https://192.168.135.64:9443;
            proxy_read_timeout  300;
            proxy_ssl_server_name on;
            proxy_ssl_session_reuse off;
            proxy_ssl_verify off;
    }


    location /dsFenicio {
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_pass https://192.168.135.64:8243;
            proxy_read_timeout  300;
            proxy_ssl_server_name on;
            proxy_ssl_session_reuse off;
            proxy_ssl_verify off;
    }

Проблема: Когда я отправил запрос кода авторизации oauth2 (от почтальона), я получил сообщение в браузере, в котором говорилось: «Обнаружены подозрительные попытки аутентификации В процессе аутентификации обнаружены подозрительные попытки входа в систему. Пожалуйста, попробуйте войти снова"

а это в логах (wso2carbon.log):

ОШИБКА {org.wso2.carbon.identity.application.authentication.framework.handler.request.impl.DefaultRequestCoordinator} — исключение в Authentication Framework org.ws$wso2.carbon.identity.application.authentication.framework.exception.FrameworkException: Session одноразовое значение cookie не соответствует сеансу с sessionDataKey: bf74d0ec-05ef-4682-...

Как сделать HTTP-запрос в Javascript?
Как сделать HTTP-запрос в Javascript?
В JavaScript вы можете сделать HTTP-запрос, используя объект XMLHttpRequest или более новый API fetch. Вот пример для обоих методов:
Создание ресурсов API Laravel: Советы по производительности и масштабируемости
Создание ресурсов API Laravel: Советы по производительности и масштабируемости
Создание API-ресурса Laravel может быть непростой задачей. Она требует глубокого понимания возможностей Laravel и лучших практик, чтобы обеспечить...
Как создать простое погодное приложение на Python с API OpenWeatherMap
Как создать простое погодное приложение на Python с API OpenWeatherMap
Этот учебник проведет вас через процесс создания простого погодного приложения с помощью Python и OpenWeatherMap API.
Пакеты Java
Пакеты Java
Пакет java - это группа классов, интерфейсов и подпакетов схожего типа. Думайте об этом как о папке в каталоге файлов. Мы используем пакеты, чтобы...
Как использовать API парсинга квитанций с помощью JavaScript за 5 минут?
Как использовать API парсинга квитанций с помощью JavaScript за 5 минут?
В этом руководстве вы узнаете, как использовать API парсинга квитанций за 5 минут с помощью JavaScript. Eden AI предоставляет простой и удобный для...
0
0
67
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Это связано с функцией под названием Session Nonce Cookie Validation, которая включена по умолчанию.

Я смог воспроизвести этот сценарий и смог решить эту ситуацию, оставив включенной проверку одноразовых файлов cookie сеанса. Были выполнены следующие шаги.

  1. Открыты конечные точки /commonauth, /authenticationendpoint, /logincontext через nginx в дополнение к конечной точке /oauth2.
  2. Добавил следующее в deployment.toml
[authentication.endpoints]
login_url = "https://<loadbalancer_hostname>/authenticationendpoint/login.do"
retry_url = "https://<loadbalancer_hostname>/authenticationendpoint/retry.do"

Без вышеуказанных шагов вы можете отключить эту функцию также для работы вашего сценария. Эту функцию можно отключить, добавив следующее в файл deployment.toml.

[session.nonce.cookie]
enabled = "false"

Другие вопросы по теме