svnkit Verbindung über https Anleitung

  • Themenstarter Themenstarter Spawn84
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
S

Spawn84

Gast
Dag

Wie der Titel schon vermuten lässt versuch ich mich mit svnkit (http://www.svnkit.com/) per https auf ein SVN repository zu verbinden. Der Repository server schickt mir also sein Zertifikat (X.509 format) ich schicke ihm meinen Usernamen und Passwort und das ganze sollte auch schon laufen.

Auf der svnkit Seite gibt es Beispiele wie man das kit benutzt leider wird da aber immer nur der Standartverbindungsaufbau verwendet der mit https nicht funktionieren will (oder ich mach was falsch).

Code:
	private static void setupLibrary ()
	{
		/*
		 * For using over http:// and https://
		 * Damit sollte https also gehen :\
		 */
		DAVRepositoryFactory.setup ();

		/*
		 * For using over svn:// and svn+xxx://
		 */
		SVNRepositoryFactoryImpl.setup ();

		/*
		 * For using over file:///
		 */
		FSRepositoryFactory.setup ();
	}

	public boolean doConnect (String URL, String user, String passwd) throws SVNException
	{
		setupLibrary ();

		SVNRepository repository = null;
		try
		{
			repository = SVNRepositoryFactory.create (SVNURL.parseURIEncoded (URL));
		}
		catch (SVNException svne)
		{
			System.err.println ("error while creating an SVNRepository for the location '" + URL + "': " + svne.getMessage ());
			System.exit (1);
		}

		ISVNAuthenticationManager authManager = SVNWCUtil.createDefaultAuthenticationManager (user, passwd);		
		
		repository.setAuthenticationManager (authManager);

		repository.testConnection ();
		// Exception weil was nicht stimmt :(

		return true;
	}

Bei testConnection wird dann immer eine Exception geworfen

Code:
org.tmatesoft.svn.core.SVNAuthenticationException: svn: Authentication required for '<https://xxx.xxx.xxx:443> Subversion Repository'

Was ich nicht ganz verstehen da ich ja Benutzername und Passwort angebe.

Ich hoffe ihr könnt mir da weiterhelfen oder mir einen link zu nem Beispiel geben 🙂

MfG Spawn84
 
Hmm

Gelesen hab ich das ganze gestern schon ein baar mal.

Leider bring es mich nicht weiter. Ich kann mir keinen funktionierenden Code zusammenreimen.

Ich weiß auf jeden fall mal das ich nen DefaultSVNAuthenticationManager benutzen muss der kann nämlich mit SSL umgehen. Dann weiß ich wenn ich keinen SSL Manager angebe dann wird ein default Manager genommen der dann das ganze regeln sollte.

However if no SSL manager is provided by an auth manager, SVNKit uses a default one which, of course, knows nothing of user certificate files. But this default one will provide an SSL context for creating SSL sockets as well as receive server certificate file.

Und ich weiß das mir SVNWCUtil eine Instanz vom DefaultSVNAuthenticationManager erzeugt.

Das heißt für mich eigentlich:
Code:
/*
 * DefaultSVNAuthenticationManager mit Username und Passwort bauen (DefaultSVNAuthenticationManager implementiert ISVNAuthenticationManager)
 * Der sollte dann den default SSL Manager benutzen da ich ja keinen anderen angebe
 */
ISVNAuthenticationManager authManager = SVNWCUtil.createDefaultAuthenticationManager (user, passwd);

// Das ganez dann dem repo Objekt geben
repository.setAuthenticationManager (authManager);

// Testen obs funktioniert hat
repository.testConnection ();

Leider gehts nicht. Irgendwas übersehe ich aber ich weiß nicht was.

Ich werd mich mal an die Mailingliste wenden.

MfG Spawn84
 
Hmm

Gelesen hab ich das ganze gestern schon ein baar mal.

Leider bring es mich nicht weiter. Ich kann mir keinen funktionierenden Code zusammenreimen.

Ich weiß auf jeden fall mal das ich nen DefaultSVNAuthenticationManager benutzen muss der kann nämlich mit SSL umgehen. Dann weiß ich wenn ich keinen SSL Manager angebe dann wird ein default Manager genommen der dann das ganze regeln sollte.

However if no SSL manager is provided by an auth manager, SVNKit uses a default one which, of course, knows nothing of user certificate files. But this default one will provide an SSL context for creating SSL sockets as well as receive server certificate file.

Und ich weiß das mir SVNWCUtil eine Instanz vom DefaultSVNAuthenticationManager erzeugt.

Das heißt für mich eigentlich:
Code:
/*
 * DefaultSVNAuthenticationManager mit Username und Passwort bauen (DefaultSVNAuthenticationManager implementiert ISVNAuthenticationManager)
 * Der sollte dann den default SSL Manager benutzen da ich ja keinen anderen angebe
 */
ISVNAuthenticationManager authManager = SVNWCUtil.createDefaultAuthenticationManager (user, passwd);

// Das ganez dann dem repo Objekt geben
repository.setAuthenticationManager (authManager);

// Testen obs funktioniert hat
repository.testConnection ();

Leider gehts nicht. Irgendwas übersehe ich aber ich weiß nicht was.

Ich werd mich mal an die Mailingliste wenden.

MfG Spawn84
 
Hallo, habe gerade das gleiche Problem. Weiß jemand hierzu ne Lösung?
 
Danke für den Tipp, krieg das trotzdem nicht hin. Komischerweise kann ich auf einen anderen Ordner desselben Repositories ohne Probleme zugreifen. Der svn-Kommandoclient und TortoiseSVN haben auch Zugriff auf beide Ordner. Hab keine Ahnung woran das liegt, es müsste ja das gleiche Zertifikat sein. Was mir noch aufgefallen ist: Für die anderen Ordner brauche ich noch nichtmal das Passwort und den Benutzernamen einzugeben. Anscheinend werden die irgendwo zwischengespeichert. Konnte aber in der servers bzw. config Datei von Subversion nichts finden.
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben