KEYCLOAK: получение токена доступа только по имени пользователя (без пароля)

У меня вопрос относительно Keycloak и получения токена доступа.

Наша установка выглядит следующим образом: · пользователи создаются и поддерживаются в Keycloak · ресурсы, политики и разрешения также поддерживаются в Keycloak

Наш вариант использования:

Как стороннее приложение, я хочу получить информацию об авторизации (например, разрешения на основе ресурсов и области действия) для конкретного пользователя, указав только имя пользователя для Keycloak, чтобы я мог разрешить или запретить дальнейшие действия.

Чтобы быть более конкретным: в нашем приложении необходимо проверять каждый запрос к другим службам на основе токена доступа. Но у нас есть только имя пользователя.

Теперь вопрос:

> Как мы можем получить токен доступа для пользователя, зная только его имя?

> Есть ли способ получить токен доступа для такого пользователя?


person basith    schedule 30.01.2018    source источник


Ответы (2)


Вы не указываете в своем вопросе, вошел ли текущий пользователь в систему. Вы проверяете конкретные действия пользователя или вместо этого хотите получить роли пользователей для приложения?

Пользователь вошел в систему и выполняет какое-то действие

Я полагаю, вы используете какой-то переходник для клавиатуры. Затем просто получите объект сеанса, и у вас должна быть дополнительная информация где-то там.

В противном случае вы можете просто проанализировать запрос самостоятельно. При использовании OpenId Connect токен доступа всегда отправляется для каждого запроса в заголовке Authorization. Токен закодирован в base64, вы можете самостоятельно его расшифровать.

Приложение выполняет какое-то действие для какого-то зарегистрированного пользователя, но он не вошел в систему

Маркеры доступа пользователей предназначены для предоставления пользователям разрешений. Как вы говорите в своем вопросе: As a third party application, I want... Итак, здесь вы действуете не как зарегистрированный пользователь, а как приложение, поэтому вместо этого вам нужно использовать учетные данные клиента. Просто дайте клиенту разрешения на перечисление всех пользователей и их ролей (вероятно, этого достаточно с ролью view-users, см. Ссылку ниже) и войдите в систему с предоставлением учетных данных клиента. Затем вы можете обрабатывать детализированные разрешения в бизнес-логике вашего приложения.

См. также:

person Xtreme Biker    schedule 30.01.2018

Для тех, кому действительно нужно выдавать себя за пользователя из клиента, для этого есть новый RFC: token-echange.

Keycloak свободно реализует его во время этого ответа

См., В частности, https://www.keycloak.org/docs/latest/securing_apps/#direct-naked-impersonation

person Gab    schedule 23.04.2020