Skip to content

Commit 96a2213

Browse files
authored
Merge pull request #76 from miszobi/issue/75-handle-idp-urls-with-query-params
fixes #75: handle the idp url already having a query parameter
2 parents 7b9816b + 814381f commit 96a2213

2 files changed

Lines changed: 14 additions & 1 deletion

File tree

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -570,7 +570,7 @@ public static void sendRedirect(HttpServletResponse response, String location, M
570570
String target = location;
571571

572572
if (!parameters.isEmpty()) {
573-
Boolean first = true;
573+
boolean first = !location.contains("?");
574574
for (Map.Entry<String, String> parameter : parameters.entrySet())
575575
{
576576
if (first) {

core/src/test/java/com/onelogin/saml2/test/util/UtilsTest.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
import java.security.PrivateKey;
3333
import java.security.SignatureException;
3434
import java.security.spec.InvalidKeySpecException;
35+
import java.util.Collections;
3536
import java.util.Date;
3637
import java.util.HashMap;
3738
import java.util.Map;
@@ -2107,4 +2108,16 @@ public void testQuery() throws XPathExpressionException, URISyntaxException, IOE
21072108
Node assertion_2 = assertionNodes_2.item(0);
21082109
assertEquals("saml2:Assertion", assertion_2.getNodeName());
21092110
}
2111+
2112+
@Test
2113+
public void sendRedirectToShouldHandleUrlsWithQueryParams() throws Exception {
2114+
// having
2115+
final HttpServletResponse response = mock(HttpServletResponse.class);
2116+
2117+
// when
2118+
Util.sendRedirect(response, "https://sso.connect.pingidentity.com/sso/idp/SSO.saml2?idpid=ffee-aabbb", Collections.singletonMap("SAMLRequest", "data"));
2119+
2120+
// then
2121+
verify(response).sendRedirect("https://sso.connect.pingidentity.com/sso/idp/SSO.saml2?idpid=ffee-aabbb&SAMLRequest=data");
2122+
}
21102123
}

0 commit comments

Comments
 (0)