Keycloak всегда возвращает 401 - Zuul api gateway для микросервисов - PullRequest
1 голос
/ 10 июля 2020

У меня есть микросервис, работающий за API-шлюзом (Zuul), который имеет защищенные конечные точки с помощью Keycloak. Keycloak всегда возвращает 401 для защищенных конечных точек при доступе из клиента publi c (например, почтальона) даже с действующим токеном. Я проделал тот же сценарий без использования шлюза API и отлично работает, что изолирует проблему только что добавленному шлюзу api. (Настроили клиентов, роли и пользователей в keycloak).

Служба шлюза Клиент является конфиденциальным, а клиент службы API - publi c, в keycloak.

Все службы, включая keycloak, работают как docker контейнеры. Ниже приведена загрузка keycloak-spring конфигурации в файле свойств.

keycloak :
  realm : admin-realm
  auth-server-url : http://keycloak:8080/auth
  ssl-required : external
  resource : gateway-service
  bearer-only : true
  credentials.secret : *********************
#  
  security-constraints[0] : 
    authRoles[0] : user
    securityCollections[0] : 
      patterns[0] : /api/*

Решено

Проблема заключалась в несоответствии URL-адреса эмитента токена (http://localhost: 8080 / auth / ) и URL-адрес конфигурации keycloak в файле свойств микросервиса (http://keycloak: 8080 / auth).

Это происходит, когда я тестировал микросервис из-за пределов сети docker. (От почтальона). Это могло быть решено после того, как я добавил имя хоста 'keycloak; в файл хоста Windows,

  • Откройте c: \ Windows \ System32 \ Drivers \ etc \ hosts файл от имени администратора
  • Добавьте 127.0.0.1 keycloak

Затем от почтальона мы могли бы получить доступ к конечной точке keycloak как,

  • http://keycloak: 8080 / auth ......
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...