keycloak-aplcache

Details

diff --git a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/adapter/servlet/AbstractSAMLServletsAdapterTest.java b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/adapter/servlet/AbstractSAMLServletsAdapterTest.java
index 21af1ce..7d0d43e 100644
--- a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/adapter/servlet/AbstractSAMLServletsAdapterTest.java
+++ b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/adapter/servlet/AbstractSAMLServletsAdapterTest.java
@@ -105,6 +105,7 @@ import org.w3c.dom.NodeList;
 import static org.hamcrest.Matchers.*;
 import static org.junit.Assert.*;
 import static org.keycloak.representations.idm.CredentialRepresentation.PASSWORD;
+import static org.keycloak.testsuite.AbstractAuthTest.createUserRepresentation;
 import static org.keycloak.testsuite.admin.ApiUtil.createUserAndResetPasswordWithAdminClient;
 import static org.keycloak.testsuite.admin.Users.setPasswordFor;
 import static org.keycloak.testsuite.auth.page.AuthRealm.SAMLSERVLETDEMO;
@@ -801,6 +802,48 @@ public abstract class AbstractSAMLServletsAdapterTest extends AbstractServletsAd
     }
 
     @Test
+    public void salesPostSigStaxParsingFlawEmailTest() {
+        UserRepresentation user = createUserRepresentation("bburke-additional-domain", "bburke@redhat.com.additional.domain", "Bill", "Burke", true);
+        setPasswordFor(user, PASSWORD);
+
+        String resultPage = new SamlClientBuilder()
+          .navigateTo(salesPostSigEmailServletPage.buildUri())
+          .processSamlResponse(Binding.POST).build()
+          .login().user(user).build()
+          .processSamlResponse(Binding.POST)
+            .transformString(s -> {
+                assertThat(s, org.hamcrest.Matchers.containsString(">bburke@redhat.com.additional.domain<"));
+                s = s.replaceAll("bburke@redhat.com.additional.domain", "bburke@redhat.com<!-- comment -->.additional.domain");
+                return s;
+            })
+            .build()
+          .executeAndTransform(resp -> EntityUtils.toString(resp.getEntity()));
+
+        assertThat(resultPage, org.hamcrest.Matchers.containsString("principal=bburke@redhat.com.additional.domain"));
+    }
+
+    @Test
+    public void salesPostSigChangeContents() {
+        UserRepresentation user = createUserRepresentation("bburke-additional-domain", "bburke@redhat.com.additional.domain", "Bill", "Burke", true);
+        setPasswordFor(user, PASSWORD);
+
+        String resultPage = new SamlClientBuilder()
+          .navigateTo(salesPostSigEmailServletPage.buildUri())
+          .processSamlResponse(Binding.POST).build()
+          .login().user(user).build()
+          .processSamlResponse(Binding.POST)
+            .transformString(s -> {
+                assertThat(s, org.hamcrest.Matchers.containsString(">bburke@redhat.com.additional.domain<"));
+                s = s.replaceAll("bburke@redhat.com.additional.domain", "bburke@redhat.com");
+                return s;
+            })
+            .build()
+          .executeAndTransform(resp -> EntityUtils.toString(resp.getEntity()));
+
+        assertThat(resultPage, org.hamcrest.Matchers.containsString("INVALID_SIGNATURE"));
+    }
+
+    @Test
     public void salesPostSigPersistentTest() {
         salesPostSigPersistentServletPage.navigateTo();
         testRealmSAMLPostLoginPage.form().login(bburkeUser);
diff --git a/testsuite/integration-arquillian/tests/base/src/test/resources/adapter-test/keycloak-saml/testsaml.json b/testsuite/integration-arquillian/tests/base/src/test/resources/adapter-test/keycloak-saml/testsaml.json
index 99753c6..9c12795 100755
--- a/testsuite/integration-arquillian/tests/base/src/test/resources/adapter-test/keycloak-saml/testsaml.json
+++ b/testsuite/integration-arquillian/tests/base/src/test/resources/adapter-test/keycloak-saml/testsaml.json
@@ -37,6 +37,23 @@
             }
         },
         {
+            "username" : "bburke-additional-domain",
+            "enabled": true,
+            "email" : "bburke@redhat.com.additional.domain",
+            "credentials" : [
+                { "type" : "password",
+                    "value" : "password" }
+            ],
+            "attributes" : {
+                "phone": "617"
+            },
+            "realmRoles": ["manager", "user"],
+            "applicationRoles": {
+                "http://localhost:8081/employee/": [ "employee" ],
+                "http://localhost:8081/employee2/": [ "employee" ]
+            }
+        },
+        {
             "username" : "unauthorized",
             "enabled": true,
             "email" : "unauthorized@redhat.com",