我们有一个外部身份管理系统,它必须使用Sling和REST来管理CQ5中用户的生命周期。
我们能够创建和删除用户和组
-
创造
POST http://$host:$port/libs/cq/security/authorizables/POST Content: rep:userId=example@example.org&givenName=Example&familyName=Example&email=example@example.org&rep:password=random
-
删除
POST http://$host:$port/home/users/e/example@example.org.delete.json Content: deleteAuthorizable=1
我们的问题是我们没有找到如何重命名用户(或组)。
如何重命名用户?
我们发现的唯一解决方案是
- 列出用户的所有组成员身份
- 删除用户
- 创建新用户
- 重新创建所有组成员身份
尽管此解决方案可以工作,但它很可能会带来一些性能问题(我们有超过 70K 用户和超过 15K 组)。如果这是唯一的解决方案:我们如何通过 REST 有效地执行第一步(列出所有成员资格)
知道这并不能为您的问题提供解决方案,但只是要指出通过 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是否以这种方式锁定了对用户信息的访问。