2017-06-03 258 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

相關問題