Skip to content

Commit 5ad511c

Browse files
author
merit\rembjo0
committed
Reverts first attempt back to plain vanilla
This reverts commit 14b1d78.
1 parent 14b1d78 commit 5ad511c

7 files changed

Lines changed: 99 additions & 352 deletions

File tree

core/src/main/java/com/onelogin/saml2/logout/LogoutRequest.java

Lines changed: 11 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212

1313
import javax.xml.xpath.XPathExpressionException;
1414

15-
import org.apache.commons.lang3.StringUtils;
1615
import org.apache.commons.lang3.text.StrSubstitutor;
1716
import org.joda.time.DateTime;
1817
import org.slf4j.Logger;
@@ -61,11 +60,6 @@ public class LogoutRequest {
6160
*/
6261
private final HttpRequest request;
6362

64-
/**
65-
* Map with raw request parameters as received in the queryString. Required for accurate signature verification.
66-
*/
67-
private Map<String, String> rawRequestParams;
68-
6963
/**
7064
* NameID.
7165
*/
@@ -98,19 +92,16 @@ public class LogoutRequest {
9892
* OneLogin_Saml2_Settings
9993
* @param request
10094
* the HttpRequest object to be processed (Contains GET and POST parameters, request URL, ...).
101-
* @param rawRequestParams
102-
* map with 'raw' url request parameters for signature validation (keyed on name, value is key & value)
10395
* @param nameId
10496
* The NameID that will be set in the LogoutRequest.
10597
* @param sessionIndex
10698
* The SessionIndex (taken from the SAML Response in the SSO process).
10799
* @throws XMLEntityException
108100
*
109101
*/
110-
public LogoutRequest(Saml2Settings settings, HttpRequest request, Map<String, String> rawRequestParams, String nameId, String sessionIndex) throws XMLEntityException {
102+
public LogoutRequest(Saml2Settings settings, HttpRequest request, String nameId, String sessionIndex) throws XMLEntityException {
111103
this.settings = settings;
112104
this.request = request;
113-
this.rawRequestParams = rawRequestParams;
114105

115106
String samlLogoutRequest = null;
116107

@@ -142,7 +133,7 @@ public LogoutRequest(Saml2Settings settings, HttpRequest request, Map<String, St
142133
* @throws XMLEntityException
143134
*/
144135
public LogoutRequest(Saml2Settings settings) throws XMLEntityException {
145-
this(settings, null, null, null, null);
136+
this(settings, null, null, null);
146137
}
147138

148139
/**
@@ -152,13 +143,11 @@ public LogoutRequest(Saml2Settings settings) throws XMLEntityException {
152143
* OneLogin_Saml2_Settings
153144
* @param request
154145
* the HttpRequest object to be processed (Contains GET and POST parameters, request URL, ...).
155-
* @param rawRequestParams
156-
* map with 'raw' url request parameters for signature validation (keyed on name, value is key & value)
157146
*
158147
* @throws XMLEntityException
159148
*/
160-
public LogoutRequest(Saml2Settings settings, HttpRequest request, Map<String, String> rawRequestParams) throws XMLEntityException {
161-
this(settings, request, rawRequestParams, null, null);
149+
public LogoutRequest(Saml2Settings settings, HttpRequest request) throws XMLEntityException {
150+
this(settings, request, null, null);
162151
}
163152

164153
/**
@@ -345,19 +334,15 @@ public Boolean isValid() throws Exception {
345334
if (signAlg == null || signAlg.isEmpty()) {
346335
signAlg = Constants.RSA_SHA1;
347336
}
348-
349-
String rawSamlRequest = rawRequestParams.get("SAMLRequest");
350-
String rawRelayState = rawRequestParams.get("RelayState");
351-
String rawSigAlg = rawRequestParams.get("SigAlg");
352-
353-
String signedQuery = "";
354-
signedQuery += rawSamlRequest;
355-
356-
if (StringUtils.isNotBlank(rawRelayState)) {
357-
signedQuery += "&" + rawRelayState;
337+
String relayState = request.getParameter("RelayState");
338+
339+
String signedQuery = "SAMLRequest=" + Util.urlEncoder(request.getParameter("SAMLRequest"));
340+
341+
if (relayState != null && !relayState.isEmpty()) {
342+
signedQuery += "&RelayState=" + Util.urlEncoder(relayState);
358343
}
359344

360-
signedQuery += "&" + rawSigAlg;
345+
signedQuery += "&SigAlg=" + Util.urlEncoder(signAlg);
361346

362347
if (!Util.validateBinarySignature(signedQuery, Util.base64decoder(signature), cert, signAlg)) {
363348
throw new ValidationError("Signature validation failed. Logout Request rejected", ValidationError.INVALID_SIGNATURE);

core/src/main/java/com/onelogin/saml2/logout/LogoutResponse.java

Lines changed: 8 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,9 @@
77
import java.util.HashMap;
88
import java.util.Map;
99
import java.util.Objects;
10-
import java.util.regex.Pattern;
1110

1211
import javax.xml.xpath.XPathExpressionException;
1312

14-
import org.apache.commons.lang3.StringUtils;
1513
import org.apache.commons.lang3.text.StrSubstitutor;
1614
import org.slf4j.Logger;
1715
import org.slf4j.LoggerFactory;
@@ -63,11 +61,6 @@ public class LogoutResponse {
6361
*/
6462
private final HttpRequest request;
6563

66-
/**
67-
* Map with raw request parameters as received in the queryString. Required for accurate signature verification.
68-
*/
69-
private Map<String, String> rawRequestParams;
70-
7164
/**
7265
* URL of the current host + current view
7366
*/
@@ -95,14 +88,11 @@ public class LogoutResponse {
9588
* OneLogin_Saml2_Settings
9689
* @param request
9790
* the HttpRequest object to be processed (Contains GET and POST parameters, request URL, ...).
98-
* @param rawRequestParams
99-
* map with 'raw' url request parameters for signature validation (keyed on name, value is key & value)
10091
*
10192
*/
102-
public LogoutResponse(Saml2Settings settings, HttpRequest request, Map<String, String> rawRequestParams) {
93+
public LogoutResponse(Saml2Settings settings, HttpRequest request) {
10394
this.settings = settings;
10495
this.request = request;
105-
this.rawRequestParams = rawRequestParams;
10696

10797
String samlLogoutResponse = null;
10898
if (request != null) {
@@ -224,25 +214,20 @@ public Boolean isValid(String requestId) {
224214
if (cert == null) {
225215
throw new SettingsException("In order to validate the sign on the Logout Response, the x509cert of the IdP is required", SettingsException.CERT_NOT_FOUND);
226216
}
227-
228-
217+
229218
String signAlg = request.getParameter("SigAlg");
230219
if (signAlg == null || signAlg.isEmpty()) {
231220
signAlg = Constants.RSA_SHA1;
232221
}
233222

234-
String rawSamlResponse = rawRequestParams.get("SAMLResponse");
235-
String rawRelayState = rawRequestParams.get("RelayState");
236-
String rawSigAlg = rawRequestParams.get("SigAlg");
237-
238-
String signedQuery = "";
239-
signedQuery += rawSamlResponse;
240-
241-
if (StringUtils.isNotBlank(rawRelayState)) {
242-
signedQuery += "&" + rawRelayState;
223+
String signedQuery = "SAMLResponse=" + Util.urlEncoder(request.getParameter("SAMLResponse"));
224+
225+
String relayState = request.getParameter("RelayState");
226+
if (relayState != null && !relayState.isEmpty()) {
227+
signedQuery += "&RelayState=" + Util.urlEncoder(relayState);
243228
}
244229

245-
signedQuery += "&" + rawSigAlg;
230+
signedQuery += "&SigAlg=" + Util.urlEncoder(signAlg);
246231

247232
if (!Util.validateBinarySignature(signedQuery, Util.base64decoder(signature), cert, signAlg)) {
248233
throw new ValidationError("Signature validation failed. Logout Response rejected", ValidationError.INVALID_SIGNATURE);

core/src/main/java/com/onelogin/saml2/util/QueryStringSplitter.java

Lines changed: 0 additions & 65 deletions
This file was deleted.

0 commit comments

Comments
 (0)