2017-06-03 3 views
1

Betrachten Sie die folgende POST an den Artifactory REST API:Artifactory Benutzer Update behebt Admin

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 

Diese Anforderung ist sicherzustellen, dass der Benutzer ein Mitglied sowohl der „oldgroup“ und der „newgroup“, sondern zusätzlich entfernt es Administratorrechte vom Benutzer (wenn sie es hatten): Ex. { "admin": true } ändert sich nach dem Update zu { "admin": false }.

Es scheint, dass man zusätzlich benötigen würde { "admin": true } passieren, wenn der Benutzer ein Admin ursprünglich um diesen seltsamen Nebeneffekt des Updates zu vermeiden ist:

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 

scheint diese nicht als umgesetzt werden echtes Update. Ist das ein Fehler? Fehle ich etwas?

Außerdem habe ich mich gefragt, ob dies mit dem 'Content-Type' Header zu tun hatte ich ursprünglich vorging, als ich die volle application/vnd.org.jfrog.artifactory.security.User+json wurde mit aber eine Änderung nur application/json hat das gleiche Ergebnis.

Ich konnte sehen, ob ich die PUT-Methode verwendet, um einen Benutzer zu erstellen oder zu ersetzen, aber das ist die POST-Anfrage und scheint nicht zu funktionieren, wie ich es erwarte.


Artifactory REST API-Dokumentation und meine Forschung:

Antwort

1

Wie Artefactory beim Abrufen der Update-REST-API Befehl, kann nicht sagen, welche Parameter Sie ändern wollten, zum Beispiel in Ihrem Fall die Gruppen ändern, es nimmt Ihre Eingabe und wendet sie auf den Benutzer an. Das bedeutet, dass der Wert von Admin auf "false" gesetzt wird, da dies der Standardwert für dieses Feld ist. Für den Fall, dass Sie die bestehende Konfiguration für den Benutzer speichern möchten, würde ich vorschlagen, eine Abfrage für die Benutzerdetails zu machen> Speichern in einer JSON-Datei> Bearbeiten Sie sie auf die gewünschten Werte> Posten Sie sie in Artifactory. Auf diese Weise ändern Sie nicht die Werte, die Sie behalten möchten.

+0

Danke für die Antwort! Ich hatte ursprünglich dasselbe gedacht. Wenn Sie jedoch die Dokumentation für die RST-API betrachten, werden Sie feststellen, dass es zwei Routen zum Aktualisieren von Benutzerobjekten gibt: "PUT" und "POST". - Erstellen oder Ersetzen Benutzer: 'PUT/api/Sicherheit/Benutzer/{Benutzername}' - Update Benutzer: 'POST/api/security/Benutzer/{Benutzername}' Die Hinweise zum Erstellen oder Ersetzen deutlich zu sagen : "Fehlende Werte werden auf die Standardwerte gesetzt" Für Update: "Aktualisiert einen bestehenden Benutzer in Artifactory mit den angegebenen Benutzerdetails" Daher glaube ich, dass das Update nicht ordnungsgemäß funktioniert. – vicster

+0

In der Tat kann ich sehen, dass es scheint, dass die Dokumentation diese Informationen für den "Update-Benutzer" auch fehlt. Dies ist in der Tat verwirrend, wird aufgefordert, es zu ändern und diese Zeile dem "Update User" hinzuzufügen. Danke, dass Sie darauf hingewiesen haben – Ariel

+1

Live Update, die Dokumentation wurde entsprechend aktualisiert. – Ariel

Verwandte Themen