|
9 | 9 | import static org.junit.Assert.assertThat; |
10 | 10 | import static org.junit.Assert.assertTrue; |
11 | 11 |
|
12 | | -import java.io.IOException; |
13 | 12 | import java.util.ArrayList; |
14 | 13 | import java.util.HashMap; |
15 | 14 | import java.util.List; |
@@ -777,7 +776,7 @@ public void testValidatesTheExpectedSignatures() throws Exception { |
777 | 776 |
|
778 | 777 | // then |
779 | 778 | assertFalse(samlResponse.isValid()); |
780 | | - assertEquals("Unexpected number of Response signatures found. SAML Response rejected.", samlResponse.getError()); |
| 779 | + assertEquals("Invalid Signature Element {urn:oasis:names:tc:SAML:2.0:assertion}Response SAML Response rejected", samlResponse.getError()); |
781 | 780 | } |
782 | 781 |
|
783 | 782 | /** |
@@ -1040,10 +1039,9 @@ public void testIsValidWrongEncryptedID() throws Exception { |
1040 | 1039 | public void testIsValidWrongSPNameQualifier() throws Exception { |
1041 | 1040 | Saml2Settings settings = new SettingsBuilder().fromFile("config/config.my.properties").build(); |
1042 | 1041 | String samlResponseEncoded = Util.getFileAsString("data/responses/invalids/wrong_spnamequalifier.xml.base64"); |
1043 | | - settings.setStrict(false); |
| 1042 | + settings.setStrict(true); |
1044 | 1043 | settings.setWantAssertionsSigned(false); |
1045 | 1044 | SamlResponse samlResponse = new SamlResponse(settings, newHttpRequest(samlResponseEncoded)); |
1046 | | - assertTrue(samlResponse.isValid()); |
1047 | 1045 | String nameId = samlResponse.getNameId(); |
1048 | 1046 | } |
1049 | 1047 |
|
@@ -1885,27 +1883,27 @@ public void testIsInValidSign() throws Exception { |
1885 | 1883 | samlResponseEncoded = Util.getFileAsString("data/responses/invalids/triple_signed_response.xml.base64"); |
1886 | 1884 | samlResponse = new SamlResponse(settings, newHttpRequest(samlResponseEncoded)); |
1887 | 1885 | assertFalse(samlResponse.isValid()); |
1888 | | - assertEquals("Unexpected number of Response signatures found. SAML Response rejected.", samlResponse.getError()); |
| 1886 | + assertEquals("Duplicated ID. SAML Response rejected", samlResponse.getError()); |
1889 | 1887 |
|
1890 | 1888 | samlResponseEncoded = Util.getFileAsString("data/responses/invalids/signed_assertion_response_with_2signatures.xml.base64"); |
1891 | 1889 | samlResponse = new SamlResponse(settings, newHttpRequest(samlResponseEncoded)); |
1892 | 1890 | assertFalse(samlResponse.isValid()); |
1893 | | - assertEquals("Unexpected number of Response signatures found. SAML Response rejected.", samlResponse.getError()); |
| 1891 | + assertEquals("Duplicated ID. SAML Response rejected", samlResponse.getError()); |
1894 | 1892 |
|
1895 | 1893 | samlResponseEncoded = Util.getFileAsString("data/responses/invalids/signed_message_response_with_2signatures.xml.base64"); |
1896 | 1894 | samlResponse = new SamlResponse(settings, newHttpRequest(samlResponseEncoded)); |
1897 | 1895 | assertFalse(samlResponse.isValid()); |
1898 | | - assertEquals("Unexpected number of Response signatures found. SAML Response rejected.", samlResponse.getError()); |
| 1896 | + assertEquals("Duplicated ID. SAML Response rejected", samlResponse.getError()); |
1899 | 1897 |
|
1900 | 1898 | samlResponseEncoded = Util.getFileAsString("data/responses/invalids/wrong_signed_element.xml.base64"); |
1901 | 1899 | samlResponse = new SamlResponse(settings, newHttpRequest(samlResponseEncoded)); |
1902 | 1900 | assertFalse(samlResponse.isValid()); |
1903 | | - assertEquals("Invalid Signature Element Subject SAML Response rejected", samlResponse.getError()); |
| 1901 | + assertEquals("Invalid Signature Element {urn:oasis:names:tc:SAML:2.0:assertion}Subject SAML Response rejected", samlResponse.getError()); |
1904 | 1902 |
|
1905 | 1903 | samlResponseEncoded = Util.getFileAsString("data/responses/invalids/wrong_signed_element2.xml.base64"); |
1906 | 1904 | samlResponse = new SamlResponse(settings, newHttpRequest(samlResponseEncoded)); |
1907 | 1905 | assertFalse(samlResponse.isValid()); |
1908 | | - assertEquals("Invalid Signature Element Subject SAML Response rejected", samlResponse.getError()); |
| 1906 | + assertEquals("Invalid Signature Element {urn:oasis:names:tc:SAML:2.0:assertion}Subject SAML Response rejected", samlResponse.getError()); |
1909 | 1907 |
|
1910 | 1908 | samlResponseEncoded = Util.getFileAsString("data/responses/invalids/duplicate_reference_uri.xml.base64"); |
1911 | 1909 | samlResponse = new SamlResponse(settings, newHttpRequest(samlResponseEncoded)); |
@@ -1933,63 +1931,69 @@ public void testIsInValidSign() throws Exception { |
1933 | 1931 | */ |
1934 | 1932 | @Test |
1935 | 1933 | public void testValidateSignedElements() throws Exception { |
| 1934 | + Saml2Settings settings = new SettingsBuilder().fromFile("config/config.min.properties").build(); |
1936 | 1935 | ArrayList<String> signedElements = new ArrayList<String>(); |
1937 | 1936 | String samlResponseEncoded = Util.getFileAsString("data/responses/signed_message_response.xml.base64"); |
1938 | 1937 | Document samlResponseDoc = Util.loadXML(new String(Util.base64decoder(samlResponseEncoded))); |
| 1938 | + SamlResponse samlResponse = new SamlResponse(settings, newHttpRequest(samlResponseEncoded)); |
1939 | 1939 | NodeList signNodes = Util.query(samlResponseDoc, "//ds:Signature"); |
1940 | 1940 |
|
1941 | | - assertFalse(SamlResponse.validateSignedElements(signedElements)); |
| 1941 | + assertFalse(samlResponse.validateSignedElements(signedElements)); |
1942 | 1942 |
|
1943 | 1943 | signedElements = new ArrayList<String>(); |
1944 | 1944 | for (int i = 0; i < signNodes.getLength(); i++) { |
1945 | 1945 | Node signNode = signNodes.item(i); |
1946 | | - signedElements.add(signNode.getParentNode().getLocalName()); |
| 1946 | + signedElements.add("{" + signNode.getParentNode().getNamespaceURI() + "}" + signNode.getParentNode().getLocalName()); |
1947 | 1947 | } |
1948 | | - assertTrue(SamlResponse.validateSignedElements(signedElements)); |
| 1948 | + assertTrue(samlResponse.validateSignedElements(signedElements)); |
1949 | 1949 |
|
1950 | 1950 | samlResponseEncoded = Util.getFileAsString("data/responses/invalids/triple_signed_response.xml.base64"); |
1951 | 1951 | samlResponseDoc = Util.loadXML(new String(Util.base64decoder(samlResponseEncoded))); |
| 1952 | + samlResponse = new SamlResponse(settings, newHttpRequest(samlResponseEncoded)); |
1952 | 1953 | signNodes = Util.query(samlResponseDoc, "//ds:Signature"); |
1953 | 1954 |
|
1954 | 1955 | signedElements = new ArrayList<String>(); |
1955 | 1956 | for (int i = 0; i < signNodes.getLength(); i++) { |
1956 | 1957 | Node signNode = signNodes.item(i); |
1957 | 1958 | signedElements.add(signNode.getParentNode().getLocalName()); |
1958 | 1959 | } |
1959 | | - assertFalse(SamlResponse.validateSignedElements(signedElements)); |
| 1960 | + assertFalse(samlResponse.validateSignedElements(signedElements)); |
1960 | 1961 |
|
1961 | 1962 | samlResponseEncoded = Util.getFileAsString("data/responses/invalids/signed_assertion_response_with_2signatures.xml.base64"); |
1962 | 1963 | samlResponseDoc = Util.loadXML(new String(Util.base64decoder(samlResponseEncoded))); |
| 1964 | + samlResponse = new SamlResponse(settings, newHttpRequest(samlResponseEncoded)); |
1963 | 1965 | signNodes = Util.query(samlResponseDoc, "//ds:Signature"); |
1964 | 1966 |
|
1965 | 1967 | signedElements = new ArrayList<String>(); |
1966 | 1968 | for (int i = 0; i < signNodes.getLength(); i++) { |
1967 | 1969 | Node signNode = signNodes.item(i); |
1968 | | - signedElements.add(signNode.getParentNode().getLocalName()); |
| 1970 | + signedElements.add("{" + signNode.getParentNode().getNamespaceURI() + "}" + signNode.getParentNode().getLocalName()); |
1969 | 1971 | } |
1970 | | - assertFalse(SamlResponse.validateSignedElements(signedElements)); |
| 1972 | + assertFalse(samlResponse.validateSignedElements(signedElements)); |
1971 | 1973 |
|
1972 | 1974 | samlResponseEncoded = Util.getFileAsString("data/responses/invalids/signed_message_response_with_2signatures.xml.base64"); |
1973 | 1975 | samlResponseDoc = Util.loadXML(new String(Util.base64decoder(samlResponseEncoded))); |
| 1976 | + samlResponse = new SamlResponse(settings, newHttpRequest(samlResponseEncoded)); |
1974 | 1977 | signNodes = Util.query(samlResponseDoc, "//ds:Signature"); |
1975 | 1978 |
|
1976 | 1979 | signedElements = new ArrayList<String>(); |
1977 | 1980 | for (int i = 0; i < signNodes.getLength(); i++) { |
1978 | 1981 | Node signNode = signNodes.item(i); |
1979 | | - signedElements.add(signNode.getParentNode().getLocalName()); |
| 1982 | + signedElements.add("{" + signNode.getParentNode().getNamespaceURI() + "}" + signNode.getParentNode().getLocalName()); |
1980 | 1983 | } |
1981 | | - assertFalse(SamlResponse.validateSignedElements(signedElements)); |
| 1984 | + assertFalse(samlResponse.validateSignedElements(signedElements)); |
1982 | 1985 |
|
1983 | 1986 | samlResponseEncoded = Util.getFileAsString("data/responses/invalids/wrong_signed_element.xml.base64"); |
1984 | 1987 | samlResponseDoc = Util.loadXML(new String(Util.base64decoder(samlResponseEncoded))); |
| 1988 | + samlResponse = new SamlResponse(settings, newHttpRequest(samlResponseEncoded)); |
1985 | 1989 | signNodes = Util.query(samlResponseDoc, "//ds:Signature"); |
1986 | 1990 |
|
1987 | 1991 | signedElements = new ArrayList<String>(); |
1988 | 1992 | for (int i = 0; i < signNodes.getLength(); i++) { |
1989 | 1993 | Node signNode = signNodes.item(i); |
1990 | | - signedElements.add(signNode.getParentNode().getLocalName()); |
| 1994 | + signedElements.add("{" + signNode.getParentNode().getNamespaceURI() + "}" + signNode.getParentNode().getLocalName()); |
1991 | 1995 | } |
1992 | | - assertFalse(SamlResponse.validateSignedElements(signedElements)); |
| 1996 | + assertFalse(samlResponse.validateSignedElements(signedElements)); |
1993 | 1997 | } |
1994 | 1998 |
|
1995 | 1999 | /** |
@@ -2088,3 +2092,4 @@ private static HttpRequest newHttpRequest(String requestURL, String samlResponse |
2088 | 2092 | return new HttpRequest(requestURL).addParameter("SAMLResponse", samlResponseEncoded); |
2089 | 2093 | } |
2090 | 2094 | } |
| 2095 | + |
0 commit comments