Как удалить роль области keycloak для пользователя, используя python - PullRequest
0 голосов
/ 27 мая 2020

Я пытаюсь добавить и удалить роль области для пользователя в keycloak, используя python.

Для добавления роли области пользователю я использую следующую функцию

keycloak_admin.assign_realm_roles(user_id=user_keycloak_id,
                                          client_id=keycloak_admin.client_id,
                                          roles={'id': role_id, "name": role_name})

Но чтобы удалить роль для пользователя, я не получил никакой функции.

Даже если его API для удаления роли для пользователя, я хочу знать, как использовать его в python.

Спасибо .

1 Ответ

0 голосов
/ 28 мая 2020

Судя по тому, что я смог найти, похоже, что вы используете этот git репозиторий . И здесь - это метод, который вы сейчас вызываете. Но здесь нет удаления / удаления.

Keycloak предоставляет это как API, поэтому лучше всего будет иметь собственное удаление. Примерно так (предупреждение - не проверено !!):

def remove_realm_roles(self, user_id, client_id, roles):
    """
    Removes realm roles to a user
    :param user_id: id of user
    :param client_id: id of client containing role (not client-id)
    :param roles: roles list or role (use RoleRepresentation)
    :return Keycloak server response
    """

    payload = roles if isinstance(roles, list) else [roles]
    params_path = {"realm-name": self.realm_name, "id": user_id}
    data_raw = self.raw_delete(URL_ADMIN_USER_REALM_ROLES.format(**params_path),
                             data=json.dumps(payload))
    return raise_error_from_response(data_raw, KeycloakGetError, expected_code=204)

Единственное изменение кода из репозитория git состоит в том, что здесь используется raw_delete вместо raw_post. Документы Keycloak Admin REST API показывают, что он принимает точно такие же параметры, так что это просто вопрос изменения метода HTTP.

...