keycloak и social-auth-app- django: как получить группы пользователей - PullRequest
0 голосов
/ 22 января 2020

Моя настройка: docker контейнеры для веб-сайтов и Keycloak.

веб-контейнер: Django 2.2

social-auth-app-django == 3.1.0

social-auth-core == 3.2.0

контейнер keycloak: потянул jboss/keycloak изображение.

Вопрос о коде: я использую social-auth-app-django (не python-keycloak), логин и выход уже функционируют. Есть ли вызов, который бы дал мне список групп, к которым принадлежит пользователь (конечно, я говорю не о пользователях и группах "django", а о пользователях и группах "keycloak", которые были настроены через интерфейс администратора keycloak) ? У меня есть файл pipelines.py, в котором я пытаюсь создать собственный конвейер для извлечения этой информации из объектов user и backend, например

print("backend.get_user", backend.get_user(user_id))

, это дает мне назад:

{'username': 'xxxx', 'email': 'xxxx', 'fullname': 'xxxx', 'first_name': 'xxxx', 'last_name': 'xxxx '}

и

print("backend.extra_data", backend.extra_data(user, user_id, response)) возвращает меня

{' auth_time ': 1579705033,' access_token ':' xxxx ',' token_type ':' bearer '}

несколько других вещей, которые я пробовал, не возвращают информацию о группах. Документация Python Документация Social Auth не помогла.

Как получить список групп для данного пользователя, используя все, что доступно в social-auth-app- django?

1 Ответ

0 голосов
/ 28 января 2020

Это не документировано в документах API Keycloak, я нашел решение, угадав, что это может быть :-).

headers = {'Authorization': 'Bearer %s' % token}
groups_request = r
hequests.get('http://yoursite:8080/auth/admin/realms/<realm_name>/users/<user_id>/groups', headers=headers)
...