Jenkins Login per Java Download Manager

PG_97

Aktives Mitglied
Moin,

eine Frage in die Runde. Derzeit bin ich dabei einen kleinen Update Manager für unsere Firmenprodukte zu schreiben. Dieser bezieht die Updatepakete von Jenkins und lädt diese im Programm hoch.
Der Download Manager steht soweit, es hapert leider an der Autentifizierung für Jenkins (http). Mit einem Basic Authenticator habe ich es schon versucht.

Wisst Ihr wie das beim Jenkins mit dem Login läuft?
 
Der Jenkins login läuft mit API Token. Dazu musst Du Dich mit dem enstprechenden User beim Jenkins anmelden und unter Configure kannst Du dann API Token erstellen.

Im Build Job dann noch über Enable project-based security die entsprechenden Rechte setzen.

Edit: Ich habe das mit einer Software Registry (REST Service) gelöst, der Jenkins verbindet sich, nachdem er eine neuen Version gebaut hat, mit der Registry und registriert diese dort. Meine Page sowie der Updater des Programms verbinden sich dann nur noch mit der Registry. Somit kann ich später, für nicht Freie Software einen Auth Service anbinden, damit jeder Nutzer seine eigenen Zugansdaten bekommt.
 
Zuletzt bearbeitet:
Zweierlei Fragen tun sich mir auf:
Einerseits muss ich den Token erstellen, dann überreiche ich diesen Token Jenkins. Was ich mich frage, wie überreiche ich diesen Token? Die zweite Frage, gibt es für die Token Erstellung und das überreichen dieses Token eine einfache Java - Methode ohne das ich mit Maven und Co. arbeiten muss?

Sorry für die Fragen, aber ich kenne mich weder mit Jenkins oder Authentifizierung in Java überhaupt nicht aus. Das einzige was ich hinbekommen habe ist die einfache Authentifizierung. Das ist halt mein erstes mal...
 
Was ich mich frage, wie überreiche ich diesen Token?
https://${UPDATE_USER}:${UPDATE_TOKEN}@${JENKINS_HOME}/${PATH_TO_ARTIFACT}

Die zweite Frage, gibt es für die Token Erstellung und das überreichen dieses Token eine einfache Java - Methode ohne das ich mit Maven und Co. arbeiten muss?
Die Token Erstellung geht nur manuell über die Jenkins GUI. Das Überreichen geht über die URL und die kannst Du aufrufen mit was immer Du möchtest. Aber ggf. verstehe ich die Frage falsch.
 
Du kannst auch die Artifakte von Jenkins in ein Repo (entweder ein Fileshare, Web Dienst oder eine Applikation wie z.B. Nexus) nach erfolgtem Build legen und musst dann vom Update Manager nicht aufs Jenkins sondern auf das Repo zugreifen.
 
Also ich kriege diesen Token von Jenkins, den muss ich ja in JWT packen. Gibt es in Java, ohne das ich Maven und Co. nutzen muss, eine Methode, die diesen Token in eine Jason Datei schreibt und diese übergibt? Das übergeben würde ich ja mit https://${UPDATE_USER}:${UPDATE_TOKEN}@${JENKINS_HOME}/${PATH_TO_ARTIFACT} machen.
 
Ein JWT / JSON brauchst Du eigentlich nicht (außer Euer Jenkins wurde dahingehend modifiziert). Einfach die Werte (${...}) in der URL ersetzen und gut.
 
Das Token musst du einmal manuell aus Jenkins kopieren und irgendwo in deinem Programm als Konfiugrationsdatei oder sonstiges ablegen.

Es gibt keine Möglichkeit Jenkins zu fragen nach dem Token - das Token brauchst du um Jenkins überhaupt fragen zu könne.
 
Ah, okay. Danke!
Wahrscheinlich werde ich das mit Verbindung über zweierlei Wege leiten müssen. Einerseits basic Autentifizierung und Jenkins Autentifizierung. Je nach ausgewählter Login-Methode nimmt dann das Programm bei der Authentifizierung den Token bzw. User und PW und dann der normale Download.

Bei der Jenkins Authentifizierung dann sagen, bei 403, nehme diese Zeichenkette und übergebe diesen an Jenkins mithilfe der URL und lade dann die Datei runter. Ich verstehe.... Demnach jetzt das ganze noch einbauen und dann sollte es funktionieren. Okay... Dann mal frisch ans Werk.
 
Wahrscheinlich werde ich das mit Verbindung über zweierlei Wege leiten müssen. Einerseits basic Autentifizierung und Jenkins Autentifizierung. Je nach ausgewählter Login-Methode nimmt dann das Programm bei der Authentifizierung den Token bzw. User und PW und dann der normale Download.

Bei der Jenkins Authentifizierung dann sagen, bei 403, nehme diese Zeichenkette und übergebe diesen an Jenkins mithilfe der URL und lade dann die Datei runter. Ich verstehe.... Demnach jetzt das ganze noch einbauen und dann sollte es funktionieren. Okay... Dann mal frisch ans Werk.
Warum auf zwei Wegen?

Du musst einfach nur immer den Token nutzen, im Idealfall mit einem extra Nutzer im Jenkins, der keinerlei Rechte außer die zum Runterladen absolut nötigen besitzt.
 
Ach so...du willst die Sachen aber nicht aus dem Jenkins runter und per FTP wieder irgendwo hochladen?

FTP Server mit Basic Authentifizierung und Jenkins mit ultra komplexer Methode.
Die Jenkins-Variante ist Basic Authentifizierung, nur dass das Passwort ein zufälliger Token statt dem Plaintext-Passwort des Nutzers ist.
 
Nee, zwei Möglichkeiten zum Downloaden um dann in unserer Software hochzuladen, wo das Update verteilt und installiert wird.
 

Neue Themen


Zurück
Oben