0

Ich bin bereit, ein privates Maven-Repository zu erstellen, bei dem die Zugriffsregeln nicht auf Gruppen/Mustern basieren, sondern auf vollständig benutzerdefinierten Regeln. Ich habe sowohl Nexus als auch Jfrog überprüft, wobei beide den einfachen Ansatz von Benutzer/Gruppe/Muster beibehalten haben. Und (AFAICS), obwohl sie benutzerdefinierte Authentifizierungsmethoden bereitstellen, bieten sie keine Regeln für benutzerdefinierte Zugriffsregeln.Wie funktioniert die Maven-Authentifizierung?

Aus diesem Grund habe ich angefangen, das Gegenteil zu denken: Was, wenn ich ein einfaches Repository mit meinen benutzerdefinierten Regeln erstellen kann. Aber als ich in der Apache-Dokumentation suchte, gab es keine klare Erklärung, wie die Authentifizierung auf der Rückseite durchgeführt wird.

Weiß jemand, wie dies gemacht wird, und vielleicht verweisen Sie mich auf die richtige Dokumentation?

+0

Sie können natürlich Zugriffsregeln für bestimmte Bereiche eines Repositorys festlegen, wenn dies erforderlich ist. In der Regel ist dies jedoch nicht erforderlich. Wenn Sie wirklich einen eingeschränkten Zugriff benötigen, erstellen Sie zum Beispiel ein separates Repository in Nexus ... BTW: Was genau verstehen Sie unter 'custom access rules ...'? – khmarbaise

+0

Das ist das Problem, die Verteilung von Artefakten ist so kompliziert, dass das Erstellen einer benutzerdefinierten Regel oder noch schlimmer ein benutzerdefiniertes Repository unmöglich ist. Praktisch jeder Benutzer sollte seine eigenen Repositories haben, die sich jederzeit ändern können. – Panayotis

+0

Ein Repository für jeden Benutzer ist nicht sinnvoll, weil die Artefakte durch ihre Koordinaten getrennt sind. Was genau ist das Problem, wenn man die Artefakte mit den Koordinaten trennt? Warum brauchst du auf einer Nutzerbasis so etwas? Was ist so kompliziert, Artefakte zu verteilen? Wohin ? Maven Central zu Ihrem eigenen lokalen Repository? – khmarbaise

Antwort

1

Die Authentifizierung erfolgt über die HTTP-Basisauthentifizierung, die im Grunde genommen den Benutzernamen und das Passwort bildet, und base64 codiert dies. Also verstehen Maven und Apache sich gegenseitig.

Aber außerhalb der Box basiert die Apache-Autorisierung auf, Sie haben es erraten. Verzeichnisse (die Mavens Artefaktgruppen repräsentieren), Benutzername und Gruppen. Wenn Sie also kein benutzerdefiniertes Apache-Modell schreiben, werden Sie nicht viel gewinnen. Wahrscheinlich kann IP-basierte Zugriffskontrolle mit Apache allein besser als mit Nexus/JFrog durchgeführt werden, aber ich habe die Authentifizierungseinstellungen seit Ewigkeiten nicht betrachtet.

+0

Ich sprach über Autorisierung dienen Seite. Was meinst du mit Apache-Modell? (und ja, ich bin bereit, etwas Code natürlich zu schreiben) – Panayotis

+0

Ich dachte, Sie wollten Ihr Repository auf einen Apache-Server hochladen und dann als statischen Inhalt dienen. Das würde definitiv funktionieren, aber die Authentifizierung wird weniger flexibel als Nexus/JFrog sein. – fhossfel

+0

Apache-Webserver meinen Sie? Wahrscheinlich ja, das ist, wo es mit einigen benutzerdefinierten PHP-Skripts enden würde. Im Moment sind JFrog/Nexus keine echte Lösung für das Problem.Wenn Sie sagen, dass sie mehr Authentifizierungsmechanismen unterstützen, mache ich mir mehr Sorgen, was der maven "Client" selbst dem Server zur Verfügung stellt. Ist es wirklich nur grundlegende HTTP/HTTPS-Authentifizierung und nichts mehr? – Panayotis

0

In Artifactory können Sie, um das zu erreichen, was Sie erwähnt haben, ein Berechtigungsziel pro Benutzer erstellen. Das bedeutet, dass alle Ihre Maven-Benutzer in demselben Repository, jedoch jeweils in einem anderen Namensraum, eingesetzt werden. Zum Beispiel, 'com/{Firma}/{Projekt} /' (bitte ersetzen Sie die Firma und das Projekt durch reale Werte)

Dies ist auf die Erlaubnis Ziel mit dem 'Include-Muster' gemacht, so sagen wir, dass mein Firmenname ist JFrog, und ich arbeite an einem Projekt mit dem Namen "artefactory". Ich werde ein Berechtigungsziel mit dem folgenden Include-Muster haben: "/ com/jfrog/artefactory/**/*".

Sie können diese Berechtigungsziele auch mithilfe eines Skripts erstellen, das es für Sie mithilfe von this REST API automatisiert.

Das bedeutet, dass ich nur diesen Namensraum erreichen kann. Hilft das?

+0

Ich versuche eher herauszufinden, wie es wirklich funktioniert, d. H. Was Maven wirklich tut - nicht, wie dies durch eine Abstraktion der fertigen Werkzeuge auf höherer Ebene gehandhabt wird. – Panayotis

+0

Maven versucht standardmäßig, die Artefakte anonym zu beheben, sofern nicht anders angegeben. Wenn nun das Repository, das es erreicht, eine Authentifizierung benötigt, wird es eine Herausforderung erhalten und wird mit der Angabe von Benutzername und Passwort aus der Datei "settings.xml" antworten. Sie können Maven auch dazu veranlassen, sich präventiv zu authentifizieren, indem Sie es so konfigurieren, dass es die Details der ersten Anfrage bereitstellt. – Ariel