Проверка токена-носителя скрытого ключа от имени клиента

#python #django #docker #oauth #keycloak

#python #django #docker #oauth #скрытый ключ

Вопрос:

Я хочу проверить токены на предъявителя в API, которые передаются из приложения браузера. API проверит токены на соответствие Keycloak, вызвав конечную точку ../userinfo, и ответит требуемым содержимым, если проверка пройдет нормально. Проблема в том, что если я передаю токен-носитель из браузера или любого другого приложения, если на то пошло (например, postman), в API и пытаюсь его проверить — я получаю «ошибка проверки токена 401».

Следующие работы:

  1. Извлеките токен из Keycloak через Postman, используя имя пользователя и пароль.
  2. Извлеките userinfo из Keycloak через Postman, используя полученный токен на предъявителя.

или

  1. Извлеките токен из Keycloak непосредственно из API, используя имя пользователя и пароль.
  2. Извлеките userinfo из Keycloak из API, используя полученный токен-носитель.

Следующее НЕ работает:

  1. Извлеките токен из Keycloak через Postman, используя имя пользователя и пароль.
  2. Отправьте запрос в API, работающий в контейнере docker, содержащем токен-носитель.
  3. API пытается получить userinfo, используя токен = «Ошибка проверки токена 401»

Использование одного и того же client_id и client_secret во всех сценариях.

Это что-то вроде docker networking? Или какая-то конфигурация Keycloak необходима для того, чтобы API мог проверять токен «от имени» клиента? Совершенно новый для потоков авторизации.

Ответ №1:

Понял это: я вызывал Keycloak по разным URL-адресам, localhost: 8080 от postman и host.docker.internal:8080 из API, запущенного в Docker. Оказывается, вам нужно вызывать Keycloak по одному и тому же URL-адресу с обоих концов. Я переключился на использование IP-адресов своих машин в обоих случаях, и вуаля!

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

1. как вы сделали этого человека?