[mb-devel] Using the Webservice Digest Authentication

Paul Taylor paul_t100 at fastmail.fm
Tue Dec 19 20:55:20 UTC 2006


Ok, set up new user on the test server, I assume the realm is still 
musicbrainz.org not test.muiscbrainz.org, and tried out the Apache library
and it is now attemping to do digest authentication, but failing, I post 
the code and output just in case anyone has any ideas but I shall post 
this at the Apache site.

Thanks Paul


Code here:

public static void main(String []args) throws Exception
{
//For debugging
System.setProperty("org.apache.commons.logging.Log", 
"org.apache.commons.logging.impl.SimpleLog");
System.setProperty("org.apache.commons.logging.simplelog.showdatetime", 
"true");
System.setProperty("org.apache.commons.logging.simplelog.log.httpclient.wire", 
"debug");
System.setProperty("org.apache.commons.logging.simplelog.log.org.apache.commons.httpclient", 
"debug");

URL url = new URL("http://test.musicbrainz.org/ws/1/track/");
HttpClient httpClient = new HttpClient();
List authPrefs = new ArrayList(1);
authPrefs.add(AuthPolicy.DIGEST);
httpClient.getParams().setParameter(AuthPolicy.AUTH_SCHEME_PRIORITY, 
authPrefs);
final String username = "testuser100";
final String password = "testuser100";
Credentials credentials = new UsernamePasswordCredentials(username, 
password);
AuthScope authScope = new AuthScope(url.getHost(), 
url.getPort(),"musicbrainz.org");
httpClient.getState().setCredentials(authScope, credentials);

PostMethod postMethod = new PostMethod(url.toExternalForm());
postMethod.setDoAuthentication(true);
postMethod.addParameter("client","TestProg1");
postMethod.addParameter("puid","4d8cad37-054d-4421-855e-60f111cf574a 
B2660da86-081f-eca6-12c7-739b37228326");



try
{
int result = httpClient.executeMethod(postMethod);

if (result != 200)
{
System.out.println("erro handling: " + result
+ postMethod.getStatusText());
}
}
catch (Exception e)
{
e.printStackTrace();
}
finally
{
postMethod.releaseConnection();
}
}


Output here:
2006/12/19 20:48:46:843 GMT [DEBUG] HttpClient - Java version: 1.5.0
2006/12/19 20:48:46:843 GMT [DEBUG] HttpClient - Java vendor: Sun 
Microsystems Inc.
2006/12/19 20:48:46:843 GMT [DEBUG] HttpClient - Java class path: 
C:\Apps\java\sun\j2sdk1.5.0\jre\lib\charsets.jar;C:\Apps\java\sun\j2sdk1.5.0\jre\lib\deploy.jar;C:\Apps\java\sun\j2sdk1.5.0\jre\lib\javaws.jar;C:\Apps\java\sun\j2sdk1.5.0\jre\lib\jce.jar;C:\Apps\java\sun\j2sdk1.5.0\jre\lib\jsse.jar;C:\Apps\java\sun\j2sdk1.5.0\jre\lib\plugin.jar;C:\Apps\java\sun\j2sdk1.5.0\jre\lib\rt.jar;C:\Apps\java\sun\j2sdk1.5.0\jre\lib\ext\dnsns.jar;C:\Apps\java\sun\j2sdk1.5.0\jre\lib\ext\jdic.jar;C:\Apps\java\sun\j2sdk1.5.0\jre\lib\ext\localedata.jar;C:\Apps\java\sun\j2sdk1.5.0\jre\lib\ext\packager.jar;C:\Apps\java\sun\j2sdk1.5.0\jre\lib\ext\sunjce_provider.jar;C:\Apps\java\sun\j2sdk1.5.0\jre\lib\ext\sunpkcs11.jar;D:\Code\jthink\Jaikoz\classes;D:\Code\jthink\opensrc\jaudiotagger\testclasses;D:\Code\jthink\opensrc\jaudiotagger\classes;D:\Code\jthink\libs\client\xercesImpl.jar;D:\Code\jthink\libs\client\MRJAdapter.jar;D:\Code\jthink\libs\client\quaqua.jar;D:\Code\jthink\libs\client\jtrm.jar;D:\Code\jthink\libs\client\jl1.0.jar;D:\Code\jthink\libs\client\jena.jar;D:\Code\jthink\libs\client\AppleJavaExtensions.jar;D:\Code\jthink\libs\client\musicbrainz.jar;D:\Code\jthink\libs\client\commons-codec-1.2.jar;D:\Code\jthink\libs\client\log4j-1.2.7.jar;D:\Code\jthink\libs\client\icu4j.jar;D:\Code\jthink\libs\client\xml-apis.jar;D:\Code\jthink\libs\client\rdf-api-2001-01-19.jar;D:\Code\jthink\libs\client\xalan.jar;D:\Code\jthink\libs\client\jakarta-oro-2.0.5.jar;D:\Code\jthink\libs\client\antlr.jar;D:\Code\jthink\libs\client\jhall.jar;D:\Code\jthink\libs\client\concurrent.jar;D:\Code\jthink\libs\client\jaxb-api.jar;D:\Code\jthink\libs\client\jaxb-impl.jar;D:\Code\jthink\libs\client\jsr173_1.0_api.jar;D:\Code\jthink\libs\client\activation.jar;C:\JThink\Jaikoz1018\lib\jaikoz.jar;C:\JThink\Jaikoz1018\lib;D:\Code\jthink\conf;D:\Code\jthink\libs\client\looks-2.1.1.jar;D:\Code\jthink\opensrc\commons-httpclient-3.1-beta1\commons-httpclient-3.1-beta1.jar;D:\Code\jthink\opensrc\commons-logging-1.1\commons-logging-1.1.jar;C:\Apps\java\JetBrains\JIdea5\lib\idea_rt.jar
2006/12/19 20:48:46:875 GMT [DEBUG] HttpClient - Operating system name: 
Windows XP
2006/12/19 20:48:46:875 GMT [DEBUG] HttpClient - Operating system 
architecture: x86
2006/12/19 20:48:46:875 GMT [DEBUG] HttpClient - Operating system 
version: 5.1
2006/12/19 20:48:47:203 GMT [DEBUG] HttpClient - SUN 1.5: SUN (DSA 
key/parameter generation; DSA signing; SHA-1, MD5 digests; SecureRandom; 
X.509 certificates; JKS keystore; PKIX CertPathValidator; PKIX 
CertPathBuilder; LDAP, Collection CertStores)
2006/12/19 20:48:47:203 GMT [DEBUG] HttpClient - SunRsaSign 1.5: Sun RSA 
signature provider
2006/12/19 20:48:47:203 GMT [DEBUG] HttpClient - SunJSSE 1.5: Sun JSSE 
provider(PKCS12, SunX509 key/trust factories, SSLv3, TLSv1)
2006/12/19 20:48:47:203 GMT [DEBUG] HttpClient - SunJCE 1.5: SunJCE 
Provider (implements RSA, DES, Triple DES, AES, Blowfish, ARCFOUR, RC2, 
PBE, Diffie-Hellman, HMAC)
2006/12/19 20:48:47:203 GMT [DEBUG] HttpClient - SunJGSS 1.0: Sun 
(Kerberos v5)
2006/12/19 20:48:47:203 GMT [DEBUG] HttpClient - SunSASL 1.5: Sun SASL 
provider(implements client mechanisms for: DIGEST-MD5, GSSAPI, EXTERNAL, 
PLAIN, CRAM-MD5; server mechanisms for: DIGEST-MD5, GSSAPI, CRAM-MD5)
2006/12/19 20:48:47:218 GMT [DEBUG] DefaultHttpParams - Set parameter 
http.useragent = Jakarta Commons-HttpClient/3.1-beta1
2006/12/19 20:48:47:218 GMT [DEBUG] DefaultHttpParams - Set parameter 
http.protocol.version = HTTP/1.1
2006/12/19 20:48:47:234 GMT [DEBUG] DefaultHttpParams - Set parameter 
http.connection-manager.class = class 
org.apache.commons.httpclient.SimpleHttpConnectionManager
2006/12/19 20:48:47:234 GMT [DEBUG] DefaultHttpParams - Set parameter 
http.protocol.cookie-policy = default
2006/12/19 20:48:47:234 GMT [DEBUG] DefaultHttpParams - Set parameter 
http.protocol.element-charset = US-ASCII
2006/12/19 20:48:47:234 GMT [DEBUG] DefaultHttpParams - Set parameter 
http.protocol.content-charset = ISO-8859-1
2006/12/19 20:48:47:234 GMT [DEBUG] DefaultHttpParams - Set parameter 
http.method.retry-handler = 
org.apache.commons.httpclient.DefaultHttpMethodRetryHandler at 1e152c5
2006/12/19 20:48:47:250 GMT [DEBUG] DefaultHttpParams - Set parameter 
http.dateparser.patterns = [EEE, dd MMM yyyy HH:mm:ss zzz, EEEE, 
dd-MMM-yy HH:mm:ss zzz, EEE MMM d HH:mm:ss yyyy, EEE, dd-MMM-yyyy 
HH:mm:ss z, EEE, dd-MMM-yyyy HH-mm-ss z, EEE, dd MMM yy HH:mm:ss z, EEE 
dd-MMM-yyyy HH:mm:ss z, EEE dd MMM yyyy HH:mm:ss z, EEE dd-MMM-yyyy 
HH-mm-ss z, EEE dd-MMM-yy HH:mm:ss z, EEE dd MMM yy HH:mm:ss z, 
EEE,dd-MMM-yy HH:mm:ss z, EEE,dd-MMM-yyyy HH:mm:ss z, EEE, dd-MM-yyyy 
HH:mm:ss z]
2006/12/19 20:48:47:265 GMT [DEBUG] DefaultHttpParams - Set parameter 
http.auth.scheme-priority = [Digest]
2006/12/19 20:48:47:531 GMT [DEBUG] HttpConnection - Open connection to 
test.musicbrainz.org:80
2006/12/19 20:48:47:781 GMT [DEBUG] header - >> "POST /ws/1/track/ 
HTTP/1.1[\r][\n]"
2006/12/19 20:48:47:781 GMT [DEBUG] HttpMethodBase - Adding Host request 
header
2006/12/19 20:48:47:843 GMT [DEBUG] HttpMethodBase - Default charset 
used: ISO-8859-1
2006/12/19 20:48:47:843 GMT [DEBUG] HttpMethodBase - Default charset 
used: ISO-8859-1
2006/12/19 20:48:47:843 GMT [DEBUG] header - >> "User-Agent: Jakarta 
Commons-HttpClient/3.1-beta1[\r][\n]"
2006/12/19 20:48:47:843 GMT [DEBUG] header - >> "Host: 
test.musicbrainz.org[\r][\n]"
2006/12/19 20:48:47:843 GMT [DEBUG] header - >> "Content-Length: 96[\r][\n]"
2006/12/19 20:48:47:843 GMT [DEBUG] header - >> "Content-Type: 
application/x-www-form-urlencoded[\r][\n]"
2006/12/19 20:48:47:843 GMT [DEBUG] header - >> "[\r][\n]"
2006/12/19 20:48:47:859 GMT [DEBUG] content - >> 
"client=TestProg1&puid=4d8cad37-054d-4421-855e-60f111cf574a+B2660da86-081f-eca6-12c7-739b37228326"
2006/12/19 20:48:47:859 GMT [DEBUG] EntityEnclosingMethod - Request body 
sent
2006/12/19 20:48:48:062 GMT [DEBUG] header - << "HTTP/1.1 401 
Authorization Required[\r][\n]"
2006/12/19 20:48:48:062 GMT [DEBUG] header - << "Date: Tue, 19 Dec 2006 
20:48:44 GMT[\r][\n]"
2006/12/19 20:48:48:062 GMT [DEBUG] header - << "Server: Apache/1.3.34 
(Ubuntu) mod_perl/1.29[\r][\n]"
2006/12/19 20:48:48:062 GMT [DEBUG] header - << "WWW-Authenticate: 
Digest realm="musicbrainz.org", 
nonce="577488e4a0e016da36e312b74e0015901166561324"[\r][\n]"
2006/12/19 20:48:48:062 GMT [DEBUG] header - << "Content-Type: 
text/html; charset=iso-8859-1[\r][\n]"
2006/12/19 20:48:48:062 GMT [DEBUG] header - << "Via: 1.1 
test.musicbrainz.org[\r][\n]"
2006/12/19 20:48:48:062 GMT [DEBUG] header - << "Connection: close[\r][\n]"
2006/12/19 20:48:48:062 GMT [DEBUG] header - << "Transfer-Encoding: 
chunked[\r][\n]"
2006/12/19 20:48:48:062 GMT [DEBUG] HttpMethodDirector - Authorization 
required
2006/12/19 20:48:48:078 GMT [DEBUG] AuthChallengeProcessor - Supported 
authentication schemes in the order of preference: [Digest]
2006/12/19 20:48:48:078 GMT [INFO] AuthChallengeProcessor - Digest 
authentication scheme selected
2006/12/19 20:48:48:109 GMT [DEBUG] AuthChallengeProcessor - Using 
authentication scheme: digest
2006/12/19 20:48:48:109 GMT [DEBUG] AuthChallengeProcessor - 
Authorization challenge processed
2006/12/19 20:48:48:109 GMT [DEBUG] HttpMethodDirector - Authentication 
scope: DIGEST 'musicbrainz.org'@test.musicbrainz.org:80
2006/12/19 20:48:48:109 GMT [DEBUG] HttpMethodDirector - Retry 
authentication
2006/12/19 20:48:48:109 GMT [DEBUG] content - << "1"
2006/12/19 20:48:48:109 GMT [DEBUG] content - << "d"
2006/12/19 20:48:48:109 GMT [DEBUG] content - << "a"
2006/12/19 20:48:48:109 GMT [DEBUG] content - << "[\r]"
2006/12/19 20:48:48:109 GMT [DEBUG] content - << "[\n]"
2006/12/19 20:48:48:109 GMT [DEBUG] content - << "<!DOCTYPE HTML PUBLIC 
"-//IETF//DTD HTML 2.0//EN">[\n]"
2006/12/19 20:48:48:109 GMT [DEBUG] content - << "<HTML><HEAD>[\n]"
2006/12/19 20:48:48:109 GMT [DEBUG] content - << "<TITLE>401 
Authorization Required</TITLE>[\n]"
2006/12/19 20:48:48:109 GMT [DEBUG] content - << "</HEAD><BODY>[\n]"
2006/12/19 20:48:48:109 GMT [DEBUG] content - << "<H1>Authorization 
Required</H1>[\n]"
2006/12/19 20:48:48:109 GMT [DEBUG] content - << "This server could not 
verify that you[\n]"
2006/12/19 20:48:48:109 GMT [DEBUG] content - << "are authorized to 
access the document[\n]"
2006/12/19 20:48:48:109 GMT [DEBUG] content - << "requested. Either you 
supplied the wrong[\n]"
2006/12/19 20:48:48:109 GMT [DEBUG] content - << "credentials (e.g., bad 
password), or your[\n]"
2006/12/19 20:48:48:109 GMT [DEBUG] content - << "browser doesn't 
understand how to supply[\n]"
2006/12/19 20:48:48:109 GMT [DEBUG] content - << "the credentials 
required.<P>[\n]"
2006/12/19 20:48:48:109 GMT [DEBUG] content - << "<HR>[\n]"
2006/12/19 20:48:48:109 GMT [DEBUG] content - << "<ADDRESS>Apache/1.3.34 
Server at test.musicbrainz.org Port 80</ADDRESS>[\n]"
2006/12/19 20:48:48:109 GMT [DEBUG] content - << "</BODY></HTML>[\n]"
2006/12/19 20:48:48:109 GMT [DEBUG] content - << "[\r]"
2006/12/19 20:48:48:109 GMT [DEBUG] content - << "[\n]"
2006/12/19 20:48:48:109 GMT [DEBUG] content - << "0"
2006/12/19 20:48:48:109 GMT [DEBUG] content - << "[\r]"
2006/12/19 20:48:48:109 GMT [DEBUG] content - << "[\n]"
2006/12/19 20:48:48:109 GMT [DEBUG] content - << "[\r]"
2006/12/19 20:48:48:156 GMT [DEBUG] content - << "[\n]"
2006/12/19 20:48:48:187 GMT [DEBUG] HttpMethodBase - Should close 
connection in response to directive: close
2006/12/19 20:48:48:187 GMT [DEBUG] HttpConnection - Connection is 
locked. Call to releaseConnection() ignored.
2006/12/19 20:48:48:187 GMT [DEBUG] HttpMethodDirector - Authenticating 
with DIGEST 'musicbrainz.org'@test.musicbrainz.org:80
2006/12/19 20:48:48:187 GMT [DEBUG] HttpMethodParams - Credential 
charset not configured, using HTTP element charset
2006/12/19 20:48:48:187 GMT [DEBUG] DigestScheme - Using null qop method
2006/12/19 20:48:48:187 GMT [DEBUG] HttpConnection - Open connection to 
test.musicbrainz.org:80
2006/12/19 20:48:48:421 GMT [DEBUG] header - >> "POST /ws/1/track/ 
HTTP/1.1[\r][\n]"
2006/12/19 20:48:48:421 GMT [DEBUG] HttpMethodBase - Adding Host request 
header
2006/12/19 20:48:48:421 GMT [DEBUG] header - >> "User-Agent: Jakarta 
Commons-HttpClient/3.1-beta1[\r][\n]"
2006/12/19 20:48:48:421 GMT [DEBUG] header - >> "Content-Length: 96[\r][\n]"
2006/12/19 20:48:48:421 GMT [DEBUG] header - >> "Content-Type: 
application/x-www-form-urlencoded[\r][\n]"
2006/12/19 20:48:48:421 GMT [DEBUG] header - >> "Authorization: Digest 
username="testuser100", realm="musicbrainz.org", 
nonce="577488e4a0e016da36e312b74e0015901166561324", uri="/ws/1/track/", 
response="16c61a4097d654054d1f9d0ff4de20f3"[\r][\n]"
2006/12/19 20:48:48:421 GMT [DEBUG] header - >> "Host: 
test.musicbrainz.org[\r][\n]"
2006/12/19 20:48:48:437 GMT [DEBUG] header - >> "[\r][\n]"
2006/12/19 20:48:48:437 GMT [DEBUG] content - >> 
"client=TestProg1&puid=4d8cad37-054d-4421-855e-60f111cf574a+B2660da86-081f-eca6-12c7-739b37228326"
2006/12/19 20:48:48:437 GMT [DEBUG] EntityEnclosingMethod - Request body 
sent
2006/12/19 20:48:51:671 GMT [DEBUG] header - << "HTTP/1.1 400 Bad 
Request[\r][\n]"
2006/12/19 20:48:51:671 GMT [DEBUG] header - << "Date: Tue, 19 Dec 2006 
20:48:45 GMT[\r][\n]"
2006/12/19 20:48:51:671 GMT [DEBUG] header - << "Server: Apache/1.3.34 
(Ubuntu) mod_perl/1.29[\r][\n]"
2006/12/19 20:48:51:671 GMT [DEBUG] header - << "Content-Type: 
text/html; charset=iso-8859-1[\r][\n]"
2006/12/19 20:48:51:671 GMT [DEBUG] header - << "Via: 1.1 
test.musicbrainz.org[\r][\n]"
2006/12/19 20:48:51:671 GMT [DEBUG] header - << "Connection: close[\r][\n]"
2006/12/19 20:48:51:671 GMT [DEBUG] header - << "Transfer-Encoding: 
chunked[\r][\n]"
erro handlin: 400Bad Request
2006/12/19 20:48:51:671 GMT [DEBUG] content - << "1"
2006/12/19 20:48:51:671 GMT [DEBUG] content - << "9"
2006/12/19 20:48:51:671 GMT [DEBUG] content - << "9"
2006/12/19 20:48:51:671 GMT [DEBUG] content - << "[\r]"
2006/12/19 20:48:51:671 GMT [DEBUG] content - << "[\n]"
2006/12/19 20:48:51:671 GMT [DEBUG] content - << "<!DOCTYPE HTML PUBLIC 
"-//IETF//DTD HTML 2.0//EN">[\n]"
2006/12/19 20:48:51:671 GMT [DEBUG] content - << "<HTML><HEAD>[\n]"
2006/12/19 20:48:51:671 GMT [DEBUG] content - << "<TITLE>400 Bad 
Request</TITLE>[\n]"
2006/12/19 20:48:51:671 GMT [DEBUG] content - << "</HEAD><BODY>[\n]"
2006/12/19 20:48:51:671 GMT [DEBUG] content - << "<H1>Bad Request</H1>[\n]"
2006/12/19 20:48:51:671 GMT [DEBUG] content - << "Your browser sent a 
request that this server could not understand.<P>[\n]"
2006/12/19 20:48:51:671 GMT [DEBUG] content - << "<P>Additionally, a 400 
Bad Request[\n]"
2006/12/19 20:48:51:671 GMT [DEBUG] content - << "error was encountered 
while trying to use an ErrorDocument to handle the request.[\n]"
2006/12/19 20:48:51:671 GMT [DEBUG] content - << "<HR>[\n]"
2006/12/19 20:48:51:671 GMT [DEBUG] content - << "<ADDRESS>Apache/1.3.34 
Server at test.musicbrainz.org Port 80</ADDRESS>[\n]"
2006/12/19 20:48:51:671 GMT [DEBUG] content - << "</BODY></HTML>[\n]"
2006/12/19 20:48:51:671 GMT [DEBUG] content - << "[\r]"
2006/12/19 20:48:51:671 GMT [DEBUG] content - << "[\n]"
2006/12/19 20:48:51:671 GMT [DEBUG] content - << "0"
2006/12/19 20:48:51:671 GMT [DEBUG] content - << "[\r]"
2006/12/19 20:48:51:671 GMT [DEBUG] content - << "[\n]"
2006/12/19 20:48:51:671 GMT [DEBUG] content - << "[\r]"
2006/12/19 20:48:51:671 GMT [DEBUG] content - << "[\n]"
2006/12/19 20:48:51:671 GMT [DEBUG] HttpMethodBase - Should close 
connection in response to directive: close
2006/12/19 20:48:51:671 GMT [DEBUG] HttpConnection - Releasing 
connection back to connection manager.

Process finished with exit code 0





More information about the MusicBrainz-devel mailing list