Oauth2_proxy с Keycloak: получение «invalid_token» с / userinfo API - PullRequest
1 голос
/ 30 мая 2020

Я впервые пробую Keycloak и использую Keycoak в качестве провайдера с oauth2_proxy (https://github.com/oauth2-proxy/oauth2-proxy/blob/v5.1.1/providers/keycloak.go) для аутентификации пользователя через LDAP. Я выполнил все шаги внутри Keycloak, чтобы создать область, создать клиента, идентификатор клиента, секрет клиента и т. Д. c. Также передается Keycloak API "/ token". Однако как только я передаю имя пользователя / пароль на экране входа в keycloak, я получаю следующую ошибку в oauth2_proxy:

[2020/05/30 10:15:37] [requests.go:25] 401 GET http://172.20.0.10:8080/auth/realms/master/protocol/openid-connect/userinfo {"error":"invalid_token","error_description":"Token verification failed"}

Также я передаю следующие параметры при вызове oauth2_proxy docker container:

command: -upstream=static://200 -http-address=0.0.0.0:8080 -https-address=0.0.0.0:8443
      -redirect-url="https://portal.acme.com/oauth2/callback"
      -scope='test-scope' -email-domain=* -cookie-domain=* -cookie-secure=false -cookie-secret=skjgfsgfsf23524
      -cookie-samesite="none" -provider=keycloak
      -client-id='abcd-client' -client-secret='c0281257-b600-40b2-beae-68d1f2d72f02'
      --tls-cert-file=/etc/acme.com.pem
      --tls-key-file=/etc/acme.com.key
      -login-url="http://localhost:7575/auth/realms/master/protocol/openid-connect/auth"
      -redeem-url="http://172.20.0.10:8080/auth/realms/master/protocol/openid-connect/token"
      -validate-url="http://172.20.0.10:8080/auth/realms/master/protocol/openid-connect/userinfo"

Может ли кто-нибудь помочь, что может быть упущено или что-то пошло не так? Любая подсказка или подсказка будут действительно полезны.

1 Ответ

1 голос
/ 02 июня 2020

Я нашел решение этой проблемы. Это произошло потому, что эмитент в токене JWT не соответствовал URL-адресу, который я дал при вызове этого контейнера oauth2_proxy. Чтобы исправить это, требовалось, чтобы контейнер docker общался с сетью хоста и портом, предоставляемым Keycloak. Для этого нужны 2 вещи:

  1. Используйте «host. docker .internal» в качестве хоста во всех API Keycloak при вызове oauth2_proxy, чтобы контейнер oauth2_proxy обменивался данными Keycloak через сеть хоста.
  2. Сопоставьте "host. docker .internal" с 127.0.0.1 на локальном компьютере / хосте, чтобы было доступно перенаправление браузера. После этого небольшого взлома настройка работает. Спасибо!
...