Переименование пользователей через sling

У нас есть внешняя система управления идентификацией, которая должна управлять жизненным циклом пользователей в CQ5 с помощью Sling и REST.

Мы можем создавать и удалять пользователей и группы с

  • Создавать

    POST http://$host:$port/libs/cq/security/authorizables/POST 
    
    Content: rep:[email protected]&givenName=Example&familyName=Example&[email protected]&rep:password=random
    
  • Удалить

    POST http://$host:$port/home/users/e/[email protected]
    Content: deleteAuthorizable=1
    

Наша проблема в том, что мы не выяснили, как переименовать пользователя (или группу).

Как мы можем переименовать пользователя?

Единственное решение, которое мы нашли, состояло в том, чтобы

  1. перечислить все членства в группах пользователя
  2. удалить пользователя
  3. создать нового пользователя
  4. воссоздать все членство в группе

Хотя это решение может сработать, оно, скорее всего, вызовет некоторые проблемы с производительностью (у нас более 70 000 пользователей и более 15 000 групп). Если это единственное решение: как мы можем эффективно выполнить первый шаг (перечислить все членства) через REST


person Matteo    schedule 27.06.2012    source источник


Ответы (1)


Знайте, что это не дает решения вашей проблемы, а просто указывает на то, что переименование через REST кажется невозможным. Документы кажутся довольно подробными:

Пакет jackrabbit-usermanager предоставляет интерфейс REST для создания, обновления и удаления пользователей и групп в JCR.

Чтобы обновить существующего пользователя, отправьте запрос в /system/userManager/user/username.update.. Вы НЕ МОЖЕТЕ обновить имя пользователя или пароль (см. Изменить пароль ниже), через этот URL.

Хотя на той же странице кажется, что запрос для конкретного пользователя должен вернуть его членство в группе:

$ curl http://localhost:8080/system/userManager/user/admin.tidy.1.json

{
    "memberOf": [],
    "declaredMemberOf": []
}

Не уверен, блокирует ли CQ таким образом доступ к пользовательской информации.

person anotherdave    schedule 27.06.2012
comment
Спасибо, похоже, что CQ ведет себя так. Затем нам нужно будет выбрать опцию удаления/создания. Это не идеально, особенно с большим количеством пользователей и ресурсов. Мы также думаем давать разрешения через группы разрешений (а не напрямую). Так что при удалении группы нам нужно будет смотреть только на членство в группах (а не на ACL) - person Matteo; 28.06.2012
comment
Обратите внимание, что, поскольку Sling является проектом Apache, вы можете взглянуть на исходный код этих функций и, возможно, предложить улучшения, которые помогут в вашем случае использования. Я не знаю, является ли отсутствие переименования ограничением Sling или чем-то, что связано с нижними уровнями, но, вероятно, стоит взглянуть. - person Bertrand Delacretaz; 02.07.2012