#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!