diff options
-rw-r--r-- | org.eclipse.jgit/src/org/eclipse/jgit/transport/HttpAuthMethod.java | 33 |
1 files changed, 30 insertions, 3 deletions
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/HttpAuthMethod.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/HttpAuthMethod.java index 47cbf691f4..3594ea91b4 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/HttpAuthMethod.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/HttpAuthMethod.java @@ -85,24 +85,44 @@ abstract class HttpAuthMethod { public HttpAuthMethod method(String hdr) { return None.INSTANCE; } + + @Override + public String getSchemeName() { + return "None"; //$NON-NLS-1$ + } }, BASIC { @Override public HttpAuthMethod method(String hdr) { return new Basic(); } + + @Override + public String getSchemeName() { + return "Basic"; //$NON-NLS-1$ + } }, DIGEST { @Override public HttpAuthMethod method(String hdr) { return new Digest(hdr); } + + @Override + public String getSchemeName() { + return "Digest"; //$NON-NLS-1$ + } }, NEGOTIATE { @Override public HttpAuthMethod method(String hdr) { return new Negotiate(hdr); } + + @Override + public String getSchemeName() { + return "Negotiate"; //$NON-NLS-1$ + } }; /** * Creates a HttpAuthMethod instance configured with the provided HTTP @@ -112,6 +132,13 @@ abstract class HttpAuthMethod { * @return a configured HttpAuthMethod instance */ public abstract HttpAuthMethod method(String hdr); + + /** + * @return the name of the authentication scheme in the form to be used + * in HTTP authentication headers as specified in RFC2617 and + * RFC4559 + */ + public abstract String getSchemeName(); } static final String EMPTY_STRING = ""; //$NON-NLS-1$ @@ -270,7 +297,7 @@ abstract class HttpAuthMethod { void configureRequest(final HttpConnection conn) throws IOException { String ident = user + ":" + pass; //$NON-NLS-1$ String enc = Base64.encodeBytes(ident.getBytes("UTF-8")); //$NON-NLS-1$ - conn.setRequestProperty(HDR_AUTHORIZATION, type.name() + conn.setRequestProperty(HDR_AUTHORIZATION, type.getSchemeName() + " " + enc); //$NON-NLS-1$ } } @@ -357,7 +384,7 @@ abstract class HttpAuthMethod { v.append(e.getValue()); v.append('"'); } - conn.setRequestProperty(HDR_AUTHORIZATION, type.name() + conn.setRequestProperty(HDR_AUTHORIZATION, type.getSchemeName() + " " + v); //$NON-NLS-1$ } @@ -514,7 +541,7 @@ abstract class HttpAuthMethod { byte[] token = context.initSecContext(prevToken, 0, prevToken.length); - conn.setRequestProperty(HDR_AUTHORIZATION, getType().name() + conn.setRequestProperty(HDR_AUTHORIZATION, getType().getSchemeName() + " " + Base64.encodeBytes(token)); //$NON-NLS-1$ } catch (GSSException e) { IOException ioe = new IOException(); |