Skip to content

Commit d3e727f

Browse files
committed
LogoutRequest and LogoutResponse no longer depend on javax.servlet. Added removeParameter method to HttpRequest class
1 parent 818e56e commit d3e727f

10 files changed

Lines changed: 266 additions & 257 deletions

File tree

core/src/main/java/com/onelogin/saml2/authn/SamlResponse.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -616,6 +616,8 @@ public String getSessionIndex() throws XPathExpressionException {
616616

617617
/**
618618
* @return the ID of the assertion in the Response
619+
* @throws XPathExpressionException
620+
*
619621
*/
620622
public String getAssertionId() throws XPathExpressionException {
621623
validateNumAssertions();
@@ -625,6 +627,8 @@ public String getAssertionId() throws XPathExpressionException {
625627

626628
/**
627629
* @return a list of NotOnOrAfter values from SubjectConfirmationData nodes in this Response
630+
* @throws XPathExpressionException
631+
*
628632
*/
629633
public List<Instant> getAssertionNotOnOrAfter() throws XPathExpressionException {
630634
final NodeList notOnOrAfterNodes = queryAssertion("/saml:Subject/saml:SubjectConfirmation/saml:SubjectConfirmationData");

core/src/main/java/com/onelogin/saml2/http/HttpRequest.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,20 @@ public HttpRequest addParameter(String name, String value) {
6161
return new HttpRequest(requestURL, params);
6262
}
6363

64+
/**
65+
* @param name the query parameter name
66+
* @return a new HttpRequest with the given query parameter removed
67+
* @throws NullPointerException if any of the parameters is null
68+
*/
69+
public HttpRequest removeParameter(String name) {
70+
checkNotNull(name, "name");
71+
72+
final Map<String, List<String>> params = new HashMap<>(parameters);
73+
params.remove(name);
74+
75+
return new HttpRequest(requestURL, params);
76+
}
77+
6478
/**
6579
* The URL the client used to make the request. Includes a protocol, server name, port number, and server path, but
6680
* not the query string parameters.

toolkit/src/main/java/com/onelogin/saml2/logout/LogoutRequest.java renamed to core/src/main/java/com/onelogin/saml2/logout/LogoutRequest.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
import java.util.List;
1111
import java.util.Map;
1212

13-
import javax.servlet.http.HttpServletRequest;
1413
import javax.xml.xpath.XPathExpressionException;
1514

1615
import org.apache.commons.lang3.text.StrSubstitutor;
@@ -22,6 +21,7 @@
2221
import org.w3c.dom.NodeList;
2322

2423
import com.onelogin.saml2.exception.XMLEntityException;
24+
import com.onelogin.saml2.http.HttpRequest;
2525
import com.onelogin.saml2.settings.Saml2Settings;
2626
import com.onelogin.saml2.util.Util;
2727
import com.onelogin.saml2.util.Constants;
@@ -54,9 +54,9 @@ public class LogoutRequest {
5454
private final Saml2Settings settings;
5555

5656
/**
57-
* HttpServletRequest object to be processed (Contains GET and POST parameters, session, ...).
57+
* HttpRequest object to be processed (Contains GET and POST parameters, request URL, ...).
5858
*/
59-
private HttpServletRequest request;
59+
private final HttpRequest request;
6060

6161
/**
6262
* NameID.
@@ -89,15 +89,15 @@ public class LogoutRequest {
8989
* @param settings
9090
* OneLogin_Saml2_Settings
9191
* @param request
92-
* HttpServletRequest object to be processed (Contains GET and POST parameters, session, ...).
92+
* the HttpRequest object to be processed (Contains GET and POST parameters, request URL, ...).
9393
* @param nameId
9494
* The NameID that will be set in the LogoutRequest.
9595
* @param sessionIndex
9696
* The SessionIndex (taken from the SAML Response in the SSO process).
9797
*
9898
* @throws XMLEntityException
9999
*/
100-
public LogoutRequest(Saml2Settings settings, HttpServletRequest request, String nameId, String sessionIndex) throws XMLEntityException {
100+
public LogoutRequest(Saml2Settings settings, HttpRequest request, String nameId, String sessionIndex) throws XMLEntityException {
101101
this.settings = settings;
102102
this.request = request;
103103

@@ -140,11 +140,11 @@ public LogoutRequest(Saml2Settings settings) throws XMLEntityException {
140140
* @param settings
141141
* OneLogin_Saml2_Settings
142142
* @param request
143-
* HttpServletRequest object to be processed (Contains GET and POST parameters, session, ...).
143+
* the HttpRequest object to be processed (Contains GET and POST parameters, request URL, ...).
144144
*
145145
* @throws XMLEntityException
146146
*/
147-
public LogoutRequest(Saml2Settings settings, HttpServletRequest request) throws XMLEntityException {
147+
public LogoutRequest(Saml2Settings settings, HttpRequest request) throws XMLEntityException {
148148
this(settings, request, null, null);
149149
}
150150

@@ -246,7 +246,7 @@ public Boolean isValid() throws XMLEntityException {
246246
}
247247

248248
if (this.request == null) {
249-
throw new Exception("The HttpServletRequest of the current host was not established");
249+
throw new Exception("The HttpRequest of the current host was not established");
250250
}
251251

252252
if (this.currentUrl == null || this.currentUrl.isEmpty()) {

toolkit/src/main/java/com/onelogin/saml2/logout/LogoutResponse.java renamed to core/src/main/java/com/onelogin/saml2/logout/LogoutResponse.java

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
import java.util.HashMap;
88
import java.util.Map;
99

10-
import javax.servlet.http.HttpServletRequest;
1110
import javax.xml.xpath.XPathExpressionException;
1211

1312
import org.apache.commons.lang3.text.StrSubstitutor;
@@ -18,6 +17,7 @@
1817
import org.w3c.dom.NodeList;
1918

2019
import com.onelogin.saml2.exception.XMLEntityException;
20+
import com.onelogin.saml2.http.HttpRequest;
2121
import com.onelogin.saml2.settings.Saml2Settings;
2222
import com.onelogin.saml2.util.Constants;
2323
import com.onelogin.saml2.util.SchemaFactory;
@@ -55,9 +55,9 @@ public class LogoutResponse {
5555
private final Saml2Settings settings;
5656

5757
/**
58-
* HttpServletRequest object to be processed (Contains GET and POST parameters, session, ...).
58+
* HttpRequest object to be processed (Contains GET and POST parameters, request URL, ...).
5959
*/
60-
private final HttpServletRequest request;
60+
private final HttpRequest request;
6161

6262
/**
6363
* URL of the current host + current view
@@ -85,11 +85,11 @@ public class LogoutResponse {
8585
* @param settings
8686
* OneLogin_Saml2_Settings
8787
* @param request
88-
* HttpServletRequest object to be processed (Contains GET and POST parameters, session, ...).
88+
* the HttpRequest object to be processed (Contains GET and POST parameters, request URL, ...).
8989
*
9090
* @throws XMLEntityException
9191
*/
92-
public LogoutResponse(Saml2Settings settings, HttpServletRequest request) throws XMLEntityException {
92+
public LogoutResponse(Saml2Settings settings, HttpRequest request) throws XMLEntityException {
9393
this.settings = settings;
9494
this.request = request;
9595

@@ -139,12 +139,6 @@ public Boolean isValid(String requestId) {
139139
throw new Exception("SAML Logout Response is not loaded");
140140
}
141141

142-
/* No possible right now
143-
if (request == null) {
144-
throw new Exception("The HttpServletRequest of the current host was not established");
145-
}
146-
*/
147-
148142
if (this.currentUrl == null || this.currentUrl.isEmpty()) {
149143
throw new Exception("The URL of the current host was not established");
150144
}

core/src/test/java/com/onelogin/saml2/http/HttpRequestTest.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,9 @@
44
import static java.util.Collections.singletonMap;
55
import static org.hamcrest.CoreMatchers.equalTo;
66
import static org.hamcrest.CoreMatchers.nullValue;
7+
import static org.junit.Assert.assertNull;
78
import static org.junit.Assert.assertThat;
9+
import static org.junit.Assert.assertTrue;
810

911
import java.util.Arrays;
1012
import java.util.Collections;
@@ -54,4 +56,23 @@ public void testAddParameter() throws Exception {
5456
assertThat(request.getParameters(name), equalTo(singletonList(value)));
5557
assertThat(request.getParameter(name), equalTo(value));
5658
}
59+
60+
@Test
61+
public void testRemoveParameter() throws Exception {
62+
final String url = "some_url";
63+
final String name = "name";
64+
final String value = "value";
65+
66+
HttpRequest request = new HttpRequest(url).addParameter(name, value);
67+
assertThat(request.getRequestURL(), equalTo(url));
68+
assertThat(request.getParameters(), equalTo(singletonMap(name, singletonList(value))));
69+
assertThat(request.getParameters(name), equalTo(singletonList(value)));
70+
assertThat(request.getParameter(name), equalTo(value));
71+
72+
request = request.removeParameter(name);
73+
assertThat(request.getRequestURL(), equalTo(url));
74+
assertTrue(request.getParameters().isEmpty());
75+
assertTrue(request.getParameters(name).isEmpty());
76+
assertNull(request.getParameter(name));
77+
}
5778
}

0 commit comments

Comments
 (0)