Merge "Fix domain field of HTTP digest authentication"

This commit is contained in:
Shawn O. Pearce
2012-04-18 07:27:50 -07:00
committed by gerrit code review

View File

@@ -105,7 +105,7 @@ class ProjectDigestFilter implements Filter {
return; return;
} }
Response rsp = new Response((HttpServletResponse) response); Response rsp = new Response(req, (HttpServletResponse) response);
if (verify(req, rsp)) { if (verify(req, rsp)) {
chain.doFilter(req, rsp); chain.doFilter(req, rsp);
@@ -281,10 +281,6 @@ class ProjectDigestFilter implements Filter {
return p; return p;
} }
private String getDomain() {
return urlProvider.get() + "p/";
}
private String newNonce() { private String newNonce() {
try { try {
return tokens.newToken(""); return tokens.newToken("");
@@ -295,11 +291,12 @@ class ProjectDigestFilter implements Filter {
class Response extends HttpServletResponseWrapper { class Response extends HttpServletResponseWrapper {
private static final String WWW_AUTHENTICATE = "WWW-Authenticate"; private static final String WWW_AUTHENTICATE = "WWW-Authenticate";
private final HttpServletRequest req;
Boolean stale; Boolean stale;
Response(HttpServletResponse rsp) { Response(HttpServletRequest req, HttpServletResponse rsp) {
super(rsp); super(rsp);
this.req = req;
} }
private void status(int sc) { private void status(int sc) {
@@ -307,7 +304,18 @@ class ProjectDigestFilter implements Filter {
StringBuilder v = new StringBuilder(); StringBuilder v = new StringBuilder();
v.append("Digest"); v.append("Digest");
v.append(" realm=\"" + REALM_NAME + "\""); v.append(" realm=\"" + REALM_NAME + "\"");
v.append(", domain=\"" + getDomain() + "\"");
String url = urlProvider.get();
if (url == null) {
url = req.getContextPath();
if (url != null && !url.isEmpty() && !url.endsWith("/")) {
url += "/";
}
}
if (url != null && !url.isEmpty()) {
v.append(", domain=\"" + url + "\"");
}
v.append(", qop=\"auth\""); v.append(", qop=\"auth\"");
if (stale != null) { if (stale != null) {
v.append(", stale=" + stale); v.append(", stale=" + stale);