Skip to content

Commit 599f4ba

Browse files
committed
#63: address PR comments - improved error messages
1 parent a72f128 commit 599f4ba

3 files changed

Lines changed: 20 additions & 18 deletions

File tree

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import javax.servlet.http.HttpServletRequest;
1111
import javax.xml.xpath.XPathExpressionException;
1212

13+
import com.onelogin.saml2.model.SubjectConfirmationIssue;
1314
import org.joda.time.DateTime;
1415
import org.slf4j.Logger;
1516
import org.slf4j.LoggerFactory;
@@ -341,7 +342,7 @@ private void validateSubjectConfirmation(String responseInResponseTo) throws Exc
341342
}
342343

343344
if (!validSubjectConfirmation) {
344-
throw new Exception(SubjectConfirmationIssue.prettyPrint(validationIssues));
345+
throw new Exception(SubjectConfirmationIssue.prettyPrintIssues(validationIssues));
345346
}
346347
}
347348

core/src/main/java/com/onelogin/saml2/authn/SubjectConfirmationIssue.java renamed to core/src/main/java/com/onelogin/saml2/model/SubjectConfirmationIssue.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,29 @@
1-
package com.onelogin.saml2.authn;
1+
package com.onelogin.saml2.model;
22

33
import java.util.List;
44

5-
class SubjectConfirmationIssue {
5+
public class SubjectConfirmationIssue {
66
private final int subjectConfirmationIndex;
77
private final String message;
88

9-
SubjectConfirmationIssue(int subjectConfirmationIndex, String message) {
9+
public SubjectConfirmationIssue(int subjectConfirmationIndex, String message) {
1010
this.subjectConfirmationIndex = subjectConfirmationIndex;
1111
this.message = message;
1212
}
1313

14-
static String prettyPrint(List<SubjectConfirmationIssue> subjectConfirmationDataIssues) {
14+
public static String prettyPrintIssues(List<SubjectConfirmationIssue> subjectConfirmationDataIssues) {
1515
StringBuilder subjectConfirmationDataIssuesMsg = new StringBuilder("A valid SubjectConfirmation was not found on this Response");
1616
if (subjectConfirmationDataIssues.size() > 0) {
17-
subjectConfirmationDataIssuesMsg.append(" - ");
17+
subjectConfirmationDataIssuesMsg.append(": ");
1818
}
1919
for (int i = 0; i < subjectConfirmationDataIssues.size(); i++) {
2020
final SubjectConfirmationIssue issue = subjectConfirmationDataIssues.get(i);
21-
subjectConfirmationDataIssuesMsg.append(issue.message);
2221
if (subjectConfirmationDataIssues.size() > 1) {
23-
subjectConfirmationDataIssuesMsg.append(" [")
22+
subjectConfirmationDataIssuesMsg.append("\n[")
2423
.append(issue.subjectConfirmationIndex)
25-
.append("]");
24+
.append("] ");
2625
}
26+
subjectConfirmationDataIssuesMsg.append(issue.message);
2727
if (i != subjectConfirmationDataIssues.size() - 1) {
2828
subjectConfirmationDataIssuesMsg.append(", ");
2929
}

core/src/test/java/com/onelogin/saml2/test/authn/AuthnResponseTest.java

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1054,7 +1054,7 @@ public void testIsValidSubjectConfirmation_invalidInResponseTo() throws Exceptio
10541054
final String samlResponseEncoded = Util.getFileAsString("data/responses/invalids/invalid_subjectconfirmation_inresponse.xml.base64");
10551055

10561056
assertResponseValid(settings, samlResponseEncoded, false, false, "No Signature found. SAML Response rejected");
1057-
assertResponseValid(settings, samlResponseEncoded, true, false, "A valid SubjectConfirmation was not found on this Response - SubjectConfirmationData has an invalid InResponseTo value");
1057+
assertResponseValid(settings, samlResponseEncoded, true, false, "A valid SubjectConfirmation was not found on this Response: SubjectConfirmationData has an invalid InResponseTo value");
10581058
}
10591059

10601060
@Test
@@ -1063,7 +1063,7 @@ public void testIsValidSubjectConfirmation_invalidRecipient() throws Exception {
10631063
final String samlResponseEncoded = Util.getFileAsString("data/responses/invalids/invalid_subjectconfirmation_recipient.xml.base64");
10641064

10651065
assertResponseValid(settings, samlResponseEncoded, false, false, "No Signature found. SAML Response rejected");
1066-
assertResponseValid(settings, samlResponseEncoded, true, false, "A valid SubjectConfirmation was not found on this Response - SubjectConfirmationData doesn't match a valid Recipient");
1066+
assertResponseValid(settings, samlResponseEncoded, true, false, "A valid SubjectConfirmation was not found on this Response: SubjectConfirmationData doesn't match a valid Recipient");
10671067
}
10681068

10691069
@Test
@@ -1072,7 +1072,7 @@ public void testIsValidSubjectConfirmation_noLongerValid() throws Exception {
10721072
final String samlResponseEncoded = Util.getFileAsString("data/responses/invalids/invalid_subjectconfirmation_noa.xml.base64");
10731073

10741074
assertResponseValid(settings, samlResponseEncoded, false, false, "No Signature found. SAML Response rejected");
1075-
assertResponseValid(settings, samlResponseEncoded, true, false, "A valid SubjectConfirmation was not found on this Response - SubjectConfirmationData is no longer valid");
1075+
assertResponseValid(settings, samlResponseEncoded, true, false, "A valid SubjectConfirmation was not found on this Response: SubjectConfirmationData is no longer valid");
10761076
}
10771077

10781078
@Test
@@ -1081,7 +1081,7 @@ public void testIsValidSubjectConfirmation_notYetValid() throws Exception {
10811081
final String samlResponseEncoded = loadAndEncode("data/responses/invalids/invalid_subjectconfirmation_nb.xml");
10821082

10831083
assertResponseValid(settings, samlResponseEncoded, false, false, "No Signature found. SAML Response rejected");
1084-
assertResponseValid(settings, samlResponseEncoded, true, false, "A valid SubjectConfirmation was not found on this Response - SubjectConfirmationData is not yet valid");
1084+
assertResponseValid(settings, samlResponseEncoded, true, false, "A valid SubjectConfirmation was not found on this Response: SubjectConfirmationData is not yet valid");
10851085
}
10861086

10871087
@Test
@@ -1094,7 +1094,7 @@ public void testIsValidSubjectConfirmation_missingRecipient() throws Exception {
10941094

10951095
assertResponseValid(settings, samlResponseEncoded, false, true, null);
10961096
assertResponseValid(settings, samlResponseEncoded, true, false,
1097-
"A valid SubjectConfirmation was not found on this Response - SubjectConfirmationData doesn't contain a Recipient");
1097+
"A valid SubjectConfirmation was not found on this Response: SubjectConfirmationData doesn't contain a Recipient");
10981098
}
10991099

11001100
@Test
@@ -1107,7 +1107,7 @@ public void testIsValidSubjectConfirmation_missingNotOnOrAfter() throws Exceptio
11071107

11081108
assertResponseValid(settings, samlResponseEncoded, false, true, null);
11091109
assertResponseValid(settings, samlResponseEncoded, true, false,
1110-
"A valid SubjectConfirmation was not found on this Response - SubjectConfirmationData doesn't contain a NotOnOrAfter attribute");
1110+
"A valid SubjectConfirmation was not found on this Response: SubjectConfirmationData doesn't contain a NotOnOrAfter attribute");
11111111
}
11121112

11131113
@Test
@@ -1120,9 +1120,10 @@ public void testIsValidSubjectConfirmation_multipleIssues() throws Exception {
11201120

11211121
assertResponseValid(settings, samlResponseEncoded, false, true, null);
11221122
assertResponseValid(settings, samlResponseEncoded, true, false,
1123-
"A valid SubjectConfirmation was not found on this Response - SubjectConfirmationData doesn't contain a NotOnOrAfter attribute [0], " +
1124-
"SubjectConfirmationData doesn't contain a Recipient [1], " +
1125-
"SubjectConfirmationData is no longer valid [2]");
1123+
"A valid SubjectConfirmation was not found on this Response: " +
1124+
"\n[0] SubjectConfirmationData doesn't contain a NotOnOrAfter attribute, " +
1125+
"\n[1] SubjectConfirmationData doesn't contain a Recipient, " +
1126+
"\n[2] SubjectConfirmationData is no longer valid");
11261127
}
11271128

11281129
/**

0 commit comments

Comments
 (0)