Не удается подключиться к серверу JHipster UAA с помощью Curl

#docker #oauth #docker-compose #token #jhipster

#docker #oauth #docker-compose #токен #jhipster

Вопрос:

Я использую архитектуру docker-compose’d с реестром, шлюзом (8080), uaa (9999) и 2 микросервисами (8081 и 8082), и я могу видеть Swagger API в приложении gateway через выпадающий список. Я могу войти в шлюз с помощью администратора и пользователя. Я также изменил код, чтобы принять роль владельца, агента и монитора. Я могу войти в систему просто отлично.

В терминале я попробовал команду curl от Baeldung (публикация в блоге), чтобы получить токен с сервера uaa напрямую для тестирования API.

 [~]$ curl -X POST --data  "username=useramp;password=useramp;grant_type=passwordamp;scope=openid"  http://localhost:9999/oauth/token
    curl: (7) Failed to connect to localhost port 9999: Connection refused
  

Я открыл Kitematic, и в журнале контейнера docker uaa-сервер указан как localhost (хост) и 9999 (порт).

Кто-нибудь может помочь мне выяснить, почему Curl у меня не работает?

Спасибо,

Дэвид

Комментарии:

1. Вы выполняете команду curl с главного компьютера? И, можете ли вы опубликовать определение docker-compose в своем вопросе?

Ответ №1:

Эта проблема почти наверняка связана с сетевыми свойствами развертываемого стека.

Если вы выполняете команду curl с хост-компьютера наhttp://localhost:9999, тогда вам нужно убедиться, что сервер UAA сопоставляет свой порт с хостом.

Есть ли это в вашей службе UAA docker-compose.yml ?

     ports:
      - "9999:9999"
  

Если нет, вам нужно добавить его, чтобы протестировать с хоста.

По умолчанию docker-compose создаст мостовую сеть для вашего стека, где ваши контейнеры смогут взаимодействовать друг с другом и разрешать друг друга по именам контейнеров. Но с хоста вы не сможете обращаться к контейнерам, если явно не сопоставите их открытые порты с портами на хосте.

Комментарии:

1. Мне пришлось добавить… порты: «9999:9999», чтобы получить доступ к localhost: 9999 в контейнере Docker. Теперь мой curl-вызов выше выдает мне HTTP 401 — несанкционированный. Мне нужно найти правильный вызов cURL для моего сервера OAuth (uaa). Я хочу иметь возможность тестировать свои новые API вне приложения Gateway и писать код Angular. Я хочу написать вызовы запросов Javascript npm (асинхронные) для тестирования API. Я дам вам 1 голос, потому что из-за отсутствия двойного сопоставления портов приложение могло войти в систему, и я не мог видеть localhost внутри контейнера. Спасибо.

2. Привет @DavidWhitehurst! Вы решили проблему? Что вам нужно было добавить?

3. Смотрите вверх. Новая проблема, мой вызов токена, вероятно, неверен.

4. Спасибо, что приняли ответ — я надеюсь, вы решите проблему с аутентификацией на сервере UAA!