sunlabs.brazil.handler
public class DigestAuthHandler extends Object implements Handler
Future enhancements
WWW-Authenticate: Digest
realm="myrealm",
qop="auth", [req'd for IE]
nonce="dcd98b7102dd2f0e8b11d0f600bfb0c093",
opaque="5ccc069c403ebaf9f0171e9517f40e41", [optional]
domain="/foo" [optional]
Sample client return header
Authorization: Digest
username="name",
realm="foo@bar",
nonce="mynonce10",
uri="/da.html",
response="d58f3f9fa7554da651d3f1901d22ea04",
qop=auth,
nc=00000001,
cnonce="b6ac242cb324c38a"
response algorithm:
A1 = md5(user:realm:pass)
A2 = md5(method:uri)
response=md5(A1:nonce:nonceCount:cnonce:qop:A2)
- all MD5's are represented as hex: [0-9a-f]
- all quotes (") are removed before digesting
| Method Summary | |
|---|---|
| static String | computeA1(String user, String realm, String pass)
Compute the A1 parameter as per the RFC. |
| static String | computeA2(String method, String uri)
Compute the A2 parameter as per the RFC. |
| static String | computeResponse(String A1, String A2, String nonce, String nc, String cnonce, String qop)
Compute the expected client response attribute value. |
| static Properties | extractAuth(String header)
Parse an auth header, placing the results into a Properties object.
|
| static String | genResponseHeader(String request, String user, String pass, String method, String uri, String nc, String cnonce)
Given the "WWW-Authenticate" header value and additional client info,
generate the value of the "Authorization" header.
|
| boolean | init(Server server, String propsPrefix) |
| static boolean | isMd5Digest(String s)
See if a string is a valid md5 digest. |
| static void | main(String[] args)
Convert a "plain text" password file into a digested one. |
| static String | md5Digest(String s)
Compute the md5 digest of a string, returning the
digest as a hex string. |
| boolean | respond(Request request) |
| static boolean | responseOk(String A1, String method, Properties h)
Check the digest response string. |
Parameters: request The string value of the "WWW-Authenticate" header from the server user The userid pass The password associated with this user method "GET", "POST", etc. uri The requested url (e.g. "/index.html") nc The "nonce count", or number of times the client has used The "nonce" presented by the server (e.g. "0000001"). cnonce An opaque value provided by the client
Usage: DigestAuthHandler [realm]The stdin, in Properties format, is emitted on stdout with all plain-text passwords digested. If an entry is already digested, it is left alone.
Note, this handler will except either plaintext or digested passwords in the credentials file.
Parameters: A1 The "A1" hash from the RFC method The http request method. h Properties containing all the name=value options from the http authentiation header field (see extractAuth).