From f9949ac9ef39f4fcedddb5a23911a739decd5b9c Mon Sep 17 00:00:00 2001 From: Ziver Koc Date: Mon, 5 Dec 2016 16:59:36 +0100 Subject: [PATCH] Refactored digest auth to have a more flexible api --- .../net/http/page/HttpDigestAuthPage.java | 22 ++++++++++--------- .../net/http/page/HttpDigestAuthPageTest.java | 13 +++++------ 2 files changed, 17 insertions(+), 18 deletions(-) diff --git a/src/zutil/net/http/page/HttpDigestAuthPage.java b/src/zutil/net/http/page/HttpDigestAuthPage.java index e6084cb..cdf8ea7 100755 --- a/src/zutil/net/http/page/HttpDigestAuthPage.java +++ b/src/zutil/net/http/page/HttpDigestAuthPage.java @@ -15,13 +15,12 @@ import java.util.Map; import java.util.logging.Logger; /** - * A abstract page that requires HTTP Digest authentication - * to access the subclass HttpPage. + * A class that encapsulates a HttpPage around a HTTP Digest authentication requirement. * * @see rfc2069 * @author Ziver */ -public abstract class HttpDigestAuthPage implements HttpPage{ +public class HttpDigestAuthPage implements HttpPage{ private static final Logger logger = LogUtil.getLogger(); private static final String DEFAULT_REALM = "Login"; @@ -41,8 +40,17 @@ public abstract class HttpDigestAuthPage implements HttpPage{ private String realm = DEFAULT_REALM; private HashMap userMap = new HashMap<>(); private SecureRandom secRandom = new SecureRandom(); + private HttpPage targetPage; + /** + * + * @param page + */ + public HttpDigestAuthPage(HttpPage page){ + targetPage = page; + } + public void setRealm(String realm){ this.realm = realm; @@ -84,7 +92,7 @@ public abstract class HttpDigestAuthPage implements HttpPage{ authMap.get(AUTH_RESPONSE))) { // Safe area, user authenticated logger.fine("User '"+authMap.get(AUTH_USERNAME)+"' has been authenticated for realm '"+realm+"'"); - authRespond(out, headers, session, cookie, request); + targetPage.respond(out, headers, session, cookie, request); } else{ out.setStatusCode(403); @@ -154,10 +162,4 @@ public abstract class HttpDigestAuthPage implements HttpPage{ } - public abstract void authRespond(HttpPrintStream out, - HttpHeader headers, - Map session, - Map cookie, - Map request) throws IOException; - } diff --git a/test/zutil/net/http/page/HttpDigestAuthPageTest.java b/test/zutil/net/http/page/HttpDigestAuthPageTest.java index 36c7b5c..9911db2 100755 --- a/test/zutil/net/http/page/HttpDigestAuthPageTest.java +++ b/test/zutil/net/http/page/HttpDigestAuthPageTest.java @@ -7,10 +7,7 @@ import org.junit.BeforeClass; import org.junit.Test; import zutil.Hasher; import zutil.io.IOUtil; -import zutil.net.http.HttpHeader; -import zutil.net.http.HttpHeaderParser; -import zutil.net.http.HttpPrintStream; -import zutil.net.http.HttpTestUtil; +import zutil.net.http.*; import java.io.IOException; import java.util.HashMap; @@ -26,11 +23,11 @@ public class HttpDigestAuthPageTest { private static final String PAGE_USERNAME = "username"; private static final String PAGE_PASSWORD = "password"; - private HttpDigestTestPage page; + private HttpDigestAuthPage page; @Before public void init(){ - page = new HttpDigestTestPage(); + page = new HttpDigestAuthPage(new TestPage()); page.addUser(PAGE_USERNAME, PAGE_PASSWORD.toCharArray()); } @@ -113,9 +110,9 @@ public class HttpDigestAuthPageTest { return authHeaders; } - private static class HttpDigestTestPage extends HttpDigestAuthPage{ + private static class TestPage implements HttpPage { @Override - public void authRespond(HttpPrintStream out, + public void respond(HttpPrintStream out, HttpHeader headers, Map session, Map cookie,