Browse Source

Retry to call credentials provider if http authentication failed

If the user provided wrong credentials or credentials changed we
shouldn't give up immediately but retry to get valid credentials from
the credentials provider. Reset the credentials provider if
authentication failed to avoid it reuses wrong credentials in
case it stored them in a persistent store.

Bug: 338048
Bug: 342592
Bug: 427735
Change-Id: Ibd62ef3da17be6454991c43f524c8bbc7ca3c37e
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
stable-3.3
Matthias Sohn 11 years ago
parent
commit
8598fe3d2b
  1. 10
      org.eclipse.jgit/src/org/eclipse/jgit/transport/TransportHttp.java

10
org.eclipse.jgit/src/org/eclipse/jgit/transport/TransportHttp.java

@ -471,12 +471,14 @@ public class TransportHttp extends HttpTransport implements WalkTransport,
if (authMethod == HttpAuthMethod.NONE) if (authMethod == HttpAuthMethod.NONE)
throw new TransportException(uri, MessageFormat.format( throw new TransportException(uri, MessageFormat.format(
JGitText.get().authenticationNotSupported, uri)); JGitText.get().authenticationNotSupported, uri));
if (1 < authAttempts CredentialsProvider credentialsProvider = getCredentialsProvider();
|| !authMethod.authorize(uri, if (3 < authAttempts
getCredentialsProvider())) { || !authMethod.authorize(uri, credentialsProvider)) {
credentialsProvider.reset(uri);
throw new TransportException(uri, throw new TransportException(uri,
JGitText.get().notAuthorized); JGitText.get().notAuthorized);
} }
credentialsProvider.reset(uri);
authAttempts++; authAttempts++;
continue; continue;
@ -504,7 +506,7 @@ public class TransportHttp extends HttpTransport implements WalkTransport,
/** /**
* Open an HTTP connection. * Open an HTTP connection.
* *
* @param method * @param method
* @param u * @param u
* @return the connection * @return the connection

Loading…
Cancel
Save