2017-06-03 143 views
1

考虑以下POST到Artifactory的REST API:Artifactory的用户更新删除管理员

curl -f -u admin:password \ 
    -X POST \ 
    -H 'Content-Type: application/json; charset=UTF-8' \ 
    -d '{ "groups": ["oldgroup", "newgroup"] }' \ 
    http://localhost/artifactory/api/security/users/targetuser 

该请求并确保用户是两者的“oldgroup”和“新闻组”的成员,但另外它消除来自用户的管理员权限(如果他们拥有的话):例如。更新后{ "admin": true }更改为{ "admin": false }

这样看来,一个需要额外通过{ "admin": true }如果用户是管理员最初为了避免更新的这个奇怪的副作用:

curl -f -u admin:password \ 
    -X POST \ 
    -H 'Content-Type: application/json; charset=UTF-8' \ 
    -d '{ "admin": true, "groups": ["oldgroup", "newgroup"] }' \ 
    http://localhost/artifactory/api/security/users/targetuser 

这似乎并没有被实现为真正的更新。这是一个错误?我错过了什么吗?

此外,我想知道这是否与我最初传递的'Content-Type'标题相关,因为我使用的是完整的application/vnd.org.jfrog.artifactory.security.User+json,但更改为application/json的结果相同。

我可以看到我是否在使用PUT方法来创建或替换用户,但这是POST请求,似乎没有像我期望的那样工作。


Artifactory的REST API文档和我的研究:

回答

1

由于Artifactory在获取更新REST API后命令,无法确定您打算更改哪个参数,例如在您更改组的情况下,它会接受您的输入并将其应用于用户。这意味着Admin的值将被设置为false,因为这是该字段的默认值。如果您希望为用户保存现有配置,我会建议为用户详细信息做一个获取请求>将其保存到JSON文件>将其编辑为所需的值>将其发布到Artifactory。这样你就不会改变你打算保留的值。

+0

感谢您的回答!我原本以为是一样的。但是,如果您查看RST API的文档,您会发现它们有两条更新User对象的路线:'PUT'和'POST'。 - 创建或替换用户:'PUT/API /安全/用户/ {用户名}' - 更新用户:'POST/API /安全/用户/ {用户名}' 为笔记创建或替换明确规定:“缺少值将被设置为默认值” 但是,更新:“使用提供的用户详细信息更新Artifactory中的退出用户” 因此,我确信更新工作不正确。 – vicster

+0

的确,我可以看到,文档似乎也缺少“更新用户”的这些信息。这确实令人困惑,会要求改变它,并将此行添加到“更新用户”中。感谢您指出 – Ariel

+1

实时更新,文档已相应更新。 – Ariel

相关问题