From 8a1b7e39af410be58e191149295cb5f6d0c56040 Mon Sep 17 00:00:00 2001 From: Bill Burke Date: Mon, 22 Dec 2014 15:59:25 -0500 Subject: [PATCH 1/2] RESTEASY-901 --- examples/demo-template/pom.xml | 1 - examples/demo-template/rest-resources/pom.xml | 90 ------------------- .../org/keycloak/example/PublicResources.java | 36 -------- .../keycloak/example/ResourceApplication.java | 9 -- .../org/keycloak/example/SecretResources.java | 33 ------- .../WEB-INF/jboss-deployment-structure.xml | 9 -- .../src/main/webapp/WEB-INF/keycloak.json | 7 -- .../src/main/webapp/WEB-INF/web.xml | 43 --------- .../main/webapp/WEB-INF/web.xml.unconfigured | 47 ---------- .../adapters/OAuthRequestAuthenticator.java | 2 +- .../adapters/RequestAuthenticator.java | 6 -- .../jetty/JettyRequestAuthenticator.java | 5 -- .../tomcat/CatalinaRequestAuthenticator.java | 5 -- .../AbstractUndertowRequestAuthenticator.java | 4 - .../adapter/AdapterTestStrategy.java | 10 +++ 15 files changed, 11 insertions(+), 296 deletions(-) delete mode 100755 examples/demo-template/rest-resources/pom.xml delete mode 100755 examples/demo-template/rest-resources/src/main/java/org/keycloak/example/PublicResources.java delete mode 100755 examples/demo-template/rest-resources/src/main/java/org/keycloak/example/ResourceApplication.java delete mode 100755 examples/demo-template/rest-resources/src/main/java/org/keycloak/example/SecretResources.java delete mode 100755 examples/demo-template/rest-resources/src/main/webapp/WEB-INF/jboss-deployment-structure.xml delete mode 100755 examples/demo-template/rest-resources/src/main/webapp/WEB-INF/keycloak.json delete mode 100755 examples/demo-template/rest-resources/src/main/webapp/WEB-INF/web.xml delete mode 100755 examples/demo-template/rest-resources/src/main/webapp/WEB-INF/web.xml.unconfigured diff --git a/examples/demo-template/pom.xml b/examples/demo-template/pom.xml index d6f3c12398..7c33c28736 100755 --- a/examples/demo-template/pom.xml +++ b/examples/demo-template/pom.xml @@ -34,7 +34,6 @@ admin-access-app angular-product-app database-service - rest-resources third-party third-party-cdi diff --git a/examples/demo-template/rest-resources/pom.xml b/examples/demo-template/rest-resources/pom.xml deleted file mode 100755 index d27b9c0221..0000000000 --- a/examples/demo-template/rest-resources/pom.xml +++ /dev/null @@ -1,90 +0,0 @@ - - - - keycloak-parent - org.keycloak - 1.1.0.Final-SNAPSHOT - ../../../pom.xml - - 4.0.0 - org.keycloak.example.demo - rest-resources - war - Rest Resources - - - - - jboss - jboss repo - http://repository.jboss.org/nexus/content/groups/public/ - - - - - - org.jboss.resteasy - resteasy-jaxrs - provided - - - org.jboss.spec.javax.servlet - jboss-servlet-api_3.0_spec - provided - - - org.keycloak - keycloak-core - ${project.version} - provided - - - org.keycloak - keycloak-adapter-core - ${project.version} - provided - - - org.apache.httpcomponents - httpclient - ${keycloak.apache.httpcomponents.version} - provided - - - - - rest-resources - - - org.jboss.as.plugins - jboss-as-maven-plugin - - false - - - - org.wildfly.plugins - wildfly-maven-plugin - - false - - - - org.apache.maven.plugins - maven-deploy-plugin - - true - - - - org.apache.maven.plugins - maven-compiler-plugin - - ${maven.compiler.source} - ${maven.compiler.target} - - - - - diff --git a/examples/demo-template/rest-resources/src/main/java/org/keycloak/example/PublicResources.java b/examples/demo-template/rest-resources/src/main/java/org/keycloak/example/PublicResources.java deleted file mode 100755 index 056f1d5d68..0000000000 --- a/examples/demo-template/rest-resources/src/main/java/org/keycloak/example/PublicResources.java +++ /dev/null @@ -1,36 +0,0 @@ -package org.keycloak.example; - -import org.jboss.resteasy.annotations.cache.NoCache; -import org.jboss.resteasy.spi.HttpRequest; - -import javax.servlet.http.HttpServletRequest; -import javax.ws.rs.*; -import javax.ws.rs.core.Context; -import javax.ws.rs.core.HttpHeaders; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Request; -import java.security.Principal; -import java.util.ArrayList; -import java.util.List; - -@Path("public") -public class PublicResources { - - @Context - HttpServletRequest request; - - @POST - @Consumes("text/plain") - @Produces("text/plain") - @NoCache - public String get(String text) { - StringBuilder result = new StringBuilder(); - Principal userPrincipal = request.getUserPrincipal(); - if(userPrincipal != null){ - result.append("Hello ").append(userPrincipal.getName()).append("\r\n"); - } - result.append("You said: ").append(text); - - return result.toString(); - } -} diff --git a/examples/demo-template/rest-resources/src/main/java/org/keycloak/example/ResourceApplication.java b/examples/demo-template/rest-resources/src/main/java/org/keycloak/example/ResourceApplication.java deleted file mode 100755 index ab0040cefe..0000000000 --- a/examples/demo-template/rest-resources/src/main/java/org/keycloak/example/ResourceApplication.java +++ /dev/null @@ -1,9 +0,0 @@ -package org.keycloak.example; - -import javax.ws.rs.ApplicationPath; -import javax.ws.rs.core.Application; - -@ApplicationPath("/") -public class ResourceApplication extends Application -{ -} diff --git a/examples/demo-template/rest-resources/src/main/java/org/keycloak/example/SecretResources.java b/examples/demo-template/rest-resources/src/main/java/org/keycloak/example/SecretResources.java deleted file mode 100755 index ee5efa9d32..0000000000 --- a/examples/demo-template/rest-resources/src/main/java/org/keycloak/example/SecretResources.java +++ /dev/null @@ -1,33 +0,0 @@ -package org.keycloak.example; - -import org.jboss.resteasy.annotations.cache.NoCache; - -import javax.servlet.http.HttpServletRequest; -import javax.ws.rs.Consumes; -import javax.ws.rs.POST; -import javax.ws.rs.Path; -import javax.ws.rs.Produces; -import javax.ws.rs.core.Context; -import java.security.Principal; - -@Path("secret") -public class SecretResources { - - @Context - HttpServletRequest request; - - @POST - @Consumes("text/plain") - @Produces("text/plain") - @NoCache - public String get(String text) { - StringBuilder result = new StringBuilder(); - Principal userPrincipal = request.getUserPrincipal(); - if(userPrincipal != null){ - result.append("Hello ").append(userPrincipal.getName()).append("\r\n"); - } - result.append("You said: ").append(text); - - return result.toString(); - } -} diff --git a/examples/demo-template/rest-resources/src/main/webapp/WEB-INF/jboss-deployment-structure.xml b/examples/demo-template/rest-resources/src/main/webapp/WEB-INF/jboss-deployment-structure.xml deleted file mode 100755 index 9c1bac9b36..0000000000 --- a/examples/demo-template/rest-resources/src/main/webapp/WEB-INF/jboss-deployment-structure.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/examples/demo-template/rest-resources/src/main/webapp/WEB-INF/keycloak.json b/examples/demo-template/rest-resources/src/main/webapp/WEB-INF/keycloak.json deleted file mode 100755 index caed050a3f..0000000000 --- a/examples/demo-template/rest-resources/src/main/webapp/WEB-INF/keycloak.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "realm" : "demo", - "resource" : "rest-resources", - "realm-public-key" : "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCrVrCuTtArbgaZzL1hvh0xtL5mc7o0NqPVnYXkLvgcwiC3BjLGw1tGEGoJaXDuSaRllobm53JBhjx33UNv+5z/UMG4kytBWxheNVKnL6GgqlNabMaFfPLPCF8kAgKnsi79NMo+n6KnSY8YeUmec/p2vjO2NjsSAVcWEQMVhJ31LwIDAQAB", - "auth-server-url": "/auth", - "ssl-required" : "external" -} diff --git a/examples/demo-template/rest-resources/src/main/webapp/WEB-INF/web.xml b/examples/demo-template/rest-resources/src/main/webapp/WEB-INF/web.xml deleted file mode 100755 index 1c619b0ee5..0000000000 --- a/examples/demo-template/rest-resources/src/main/webapp/WEB-INF/web.xml +++ /dev/null @@ -1,43 +0,0 @@ - - - - rest-resources - - - - Public - /public/* - - - - - Secure - /secure/* - - - user - - - - - - - KEYCLOAK - demo - - - - user - - diff --git a/examples/demo-template/rest-resources/src/main/webapp/WEB-INF/web.xml.unconfigured b/examples/demo-template/rest-resources/src/main/webapp/WEB-INF/web.xml.unconfigured deleted file mode 100755 index cce3b0b261..0000000000 --- a/examples/demo-template/rest-resources/src/main/webapp/WEB-INF/web.xml.unconfigured +++ /dev/null @@ -1,47 +0,0 @@ - - - - rest-resources - - - - Public - /public/* - - - - - Secure - /secure/* - - - user - admin - - - - - - - BASIC - demo - - - - admin - - - user - - diff --git a/integration/adapter-core/src/main/java/org/keycloak/adapters/OAuthRequestAuthenticator.java b/integration/adapter-core/src/main/java/org/keycloak/adapters/OAuthRequestAuthenticator.java index 48b5ed9c9a..f5451c877b 100755 --- a/integration/adapter-core/src/main/java/org/keycloak/adapters/OAuthRequestAuthenticator.java +++ b/integration/adapter-core/src/main/java/org/keycloak/adapters/OAuthRequestAuthenticator.java @@ -153,6 +153,7 @@ public class OAuthRequestAuthenticator { exchange.getResponse().setStatus(403); return true; } + tokenStore.saveRequest(); log.debug("Sending redirect to login page: " + redirect); exchange.getResponse().setStatus(302); exchange.getResponse().setCookie(deployment.getStateCookieName(), state, /* need to set path? */ null, null, -1, deployment.getSslRequired().isRequired(facade.getRequest().getRemoteAddr()), false); @@ -202,7 +203,6 @@ public class OAuthRequestAuthenticator { } else { log.debug("redirecting to auth server"); challenge = loginRedirect(); - tokenStore.saveRequest(); return AuthOutcome.NOT_ATTEMPTED; } } else { diff --git a/integration/adapter-core/src/main/java/org/keycloak/adapters/RequestAuthenticator.java b/integration/adapter-core/src/main/java/org/keycloak/adapters/RequestAuthenticator.java index 05a2773a99..bd853da5f6 100755 --- a/integration/adapter-core/src/main/java/org/keycloak/adapters/RequestAuthenticator.java +++ b/integration/adapter-core/src/main/java/org/keycloak/adapters/RequestAuthenticator.java @@ -76,11 +76,6 @@ public abstract class RequestAuthenticator { } } - if(!isAuthenticationRequired()){ - log.debug("NOT_ATTEMPTED: authentication is not required"); - return AuthOutcome.NOT_ATTEMPTED; - } - if (log.isTraceEnabled()) { log.trace("try oauth"); } @@ -142,7 +137,6 @@ public abstract class RequestAuthenticator { protected abstract void completeOAuthAuthentication(KeycloakPrincipal principal); protected abstract void completeBearerAuthentication(KeycloakPrincipal principal, String method); protected abstract String getHttpSessionId(boolean create); - protected abstract boolean isAuthenticationRequired(); protected void completeAuthentication(BearerTokenRequestAuthenticator bearer, String method) { RefreshableKeycloakSecurityContext session = new RefreshableKeycloakSecurityContext(deployment, null, bearer.getTokenString(), bearer.getToken(), null, null, null); diff --git a/integration/jetty/jetty-core/src/main/java/org/keycloak/adapters/jetty/JettyRequestAuthenticator.java b/integration/jetty/jetty-core/src/main/java/org/keycloak/adapters/jetty/JettyRequestAuthenticator.java index 7e90aefc2f..0556b01e01 100755 --- a/integration/jetty/jetty-core/src/main/java/org/keycloak/adapters/jetty/JettyRequestAuthenticator.java +++ b/integration/jetty/jetty-core/src/main/java/org/keycloak/adapters/jetty/JettyRequestAuthenticator.java @@ -82,9 +82,4 @@ public class JettyRequestAuthenticator extends RequestAuthenticator { } - @Override - protected boolean isAuthenticationRequired() { - //TODO: find out if authentication is required - return true; - } } diff --git a/integration/tomcat/tomcat-core/src/main/java/org/keycloak/adapters/tomcat/CatalinaRequestAuthenticator.java b/integration/tomcat/tomcat-core/src/main/java/org/keycloak/adapters/tomcat/CatalinaRequestAuthenticator.java index 356c4a5654..0c70636a71 100755 --- a/integration/tomcat/tomcat-core/src/main/java/org/keycloak/adapters/tomcat/CatalinaRequestAuthenticator.java +++ b/integration/tomcat/tomcat-core/src/main/java/org/keycloak/adapters/tomcat/CatalinaRequestAuthenticator.java @@ -91,9 +91,4 @@ public class CatalinaRequestAuthenticator extends RequestAuthenticator { return session != null ? session.getId() : null; } - @Override - protected boolean isAuthenticationRequired() { - //TODO: find out if authentication is required - return true; - } } diff --git a/integration/undertow/src/main/java/org/keycloak/adapters/undertow/AbstractUndertowRequestAuthenticator.java b/integration/undertow/src/main/java/org/keycloak/adapters/undertow/AbstractUndertowRequestAuthenticator.java index 26be6378dc..a715aa5b5b 100755 --- a/integration/undertow/src/main/java/org/keycloak/adapters/undertow/AbstractUndertowRequestAuthenticator.java +++ b/integration/undertow/src/main/java/org/keycloak/adapters/undertow/AbstractUndertowRequestAuthenticator.java @@ -88,8 +88,4 @@ public abstract class AbstractUndertowRequestAuthenticator extends RequestAuthen */ protected abstract KeycloakUndertowAccount createAccount(KeycloakPrincipal principal); - @Override - protected boolean isAuthenticationRequired() { - return securityContext.isAuthenticationRequired(); - } } diff --git a/testsuite/integration/src/test/java/org/keycloak/testsuite/adapter/AdapterTestStrategy.java b/testsuite/integration/src/test/java/org/keycloak/testsuite/adapter/AdapterTestStrategy.java index d50fd71ac0..49b1a6dc50 100755 --- a/testsuite/integration/src/test/java/org/keycloak/testsuite/adapter/AdapterTestStrategy.java +++ b/testsuite/integration/src/test/java/org/keycloak/testsuite/adapter/AdapterTestStrategy.java @@ -161,6 +161,16 @@ public class AdapterTestStrategy extends ExternalResource { Assert.assertTrue(driver.getCurrentUrl().startsWith(LOGIN_URL)); driver.navigate().to(APP_SERVER_BASE_URL + "/customer-portal"); Assert.assertTrue(driver.getCurrentUrl().startsWith(LOGIN_URL)); + + // test unsecured POST KEYCLOAK-901 + + Client client = ClientBuilder.newClient(); + Form form = new Form(); + form.param("parameter", "hello"); + String text = client.target(APP_SERVER_BASE_URL + "/input-portal/unsecured").request().post(Entity.form(form), String.class); + Assert.assertTrue(text.contains("parameter=hello")); + client.close(); + } From e39ea2adafaa5b65e59f25dde9d1190d5aa6e1dd Mon Sep 17 00:00:00 2001 From: Bill Burke Date: Mon, 22 Dec 2014 16:06:19 -0500 Subject: [PATCH 2/2] remove redundant tests --- .../excluded/ExcludedResourceTest.java | 192 ------------------ .../testsuite/excluded/PostServlet.java | 29 --- 2 files changed, 221 deletions(-) delete mode 100644 testsuite/integration/src/test/java/org/keycloak/testsuite/excluded/ExcludedResourceTest.java delete mode 100644 testsuite/integration/src/test/java/org/keycloak/testsuite/excluded/PostServlet.java diff --git a/testsuite/integration/src/test/java/org/keycloak/testsuite/excluded/ExcludedResourceTest.java b/testsuite/integration/src/test/java/org/keycloak/testsuite/excluded/ExcludedResourceTest.java deleted file mode 100644 index ffaaba7f79..0000000000 --- a/testsuite/integration/src/test/java/org/keycloak/testsuite/excluded/ExcludedResourceTest.java +++ /dev/null @@ -1,192 +0,0 @@ -package org.keycloak.testsuite.excluded; - -import io.undertow.servlet.api.*; -import org.jboss.resteasy.spi.ResteasyDeployment; -import org.json.JSONException; -import org.json.JSONObject; -import org.junit.AfterClass; -import org.junit.Assert; -import org.junit.BeforeClass; -import org.junit.Test; -import org.keycloak.representations.AccessTokenResponse; -import org.keycloak.representations.idm.*; -import org.keycloak.testsuite.OAuthClient; -import org.keycloak.testutils.KeycloakServer; - -import javax.ws.rs.client.ClientBuilder; -import javax.ws.rs.client.Entity; -import javax.ws.rs.core.Form; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; -import java.util.Arrays; -import java.util.HashSet; - -/** - * Created by michigerber on 21.12.14. - */ -public class ExcludedResourceTest { - - private static KeycloakServer server; - - @BeforeClass - public static void before() throws Throwable { - server = new KeycloakServer(); - server.start(); - importRealm(); - deployApp(); - } - - private static void importRealm() { - RealmRepresentation realm = new RealmRepresentation(); - realm.setId("test"); - realm.setRealm("test"); - realm.setEnabled(true); - realm.setPrivateKey("MIICXAIBAAKBgQCrVrCuTtArbgaZzL1hvh0xtL5mc7o0NqPVnYXkLvgcwiC3BjLGw1tGEGoJaXDuSaRllobm53JBhjx33UNv+5z/UMG4kytBWxheNVKnL6GgqlNabMaFfPLPCF8kAgKnsi79NMo+n6KnSY8YeUmec/p2vjO2NjsSAVcWEQMVhJ31LwIDAQABAoGAfmO8gVhyBxdqlxmIuglbz8bcjQbhXJLR2EoS8ngTXmN1bo2L90M0mUKSdc7qF10LgETBzqL8jYlQIbt+e6TH8fcEpKCjUlyq0Mf/vVbfZSNaVycY13nTzo27iPyWQHK5NLuJzn1xvxxrUeXI6A2WFpGEBLbHjwpx5WQG9A+2scECQQDvdn9NE75HPTVPxBqsEd2z10TKkl9CZxu10Qby3iQQmWLEJ9LNmy3acvKrE3gMiYNWb6xHPKiIqOR1as7L24aTAkEAtyvQOlCvr5kAjVqrEKXalj0Tzewjweuxc0pskvArTI2Oo070h65GpoIKLc9jf+UA69cRtquwP93aZKtW06U8dQJAF2Y44ks/mK5+eyDqik3koCI08qaC8HYq2wVl7G2QkJ6sbAaILtcvD92ToOvyGyeE0flvmDZxMYlvaZnaQ0lcSQJBAKZU6umJi3/xeEbkJqMfeLclD27XGEFoPeNrmdx0q10Azp4NfJAY+Z8KRyQCR2BEG+oNitBOZ+YXF9KCpH3cdmECQHEigJhYg+ykOvr1aiZUMFT72HU0jnmQe2FVekuG+LJUt2Tm7GtMjTFoGpf0JwrVuZN39fOYAlo+nTixgeW7X8Y="); - realm.setPublicKey("MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCrVrCuTtArbgaZzL1hvh0xtL5mc7o0NqPVnYXkLvgcwiC3BjLGw1tGEGoJaXDuSaRllobm53JBhjx33UNv+5z/UMG4kytBWxheNVKnL6GgqlNabMaFfPLPCF8kAgKnsi79NMo+n6KnSY8YeUmec/p2vjO2NjsSAVcWEQMVhJ31LwIDAQAB"); - realm.setPasswordCredentialGrantAllowed(true); - realm.setRequiredCredentials(new HashSet(Arrays.asList(CredentialRepresentation.PASSWORD))); - - ApplicationRepresentation applicationRepresentation = new ApplicationRepresentation(); - applicationRepresentation.setName("app"); - applicationRepresentation.setBaseUrl("/app"); - applicationRepresentation.setPublicClient(true); - applicationRepresentation.setEnabled(true); - applicationRepresentation.setRedirectUris(Arrays.asList("/app/*")); - realm.setApplications(Arrays.asList(applicationRepresentation)); - - UserRepresentation userRepresentation = new UserRepresentation(); - userRepresentation.setId("user"); - userRepresentation.setUsername("user"); - userRepresentation.setEnabled(true); - CredentialRepresentation credential = new CredentialRepresentation(); - credential.setType(CredentialRepresentation.PASSWORD); - credential.setValue("password"); - userRepresentation.setCredentials(Arrays.asList(credential)); - userRepresentation.setRealmRoles(Arrays.asList("user")); - realm.setUsers(Arrays.asList(userRepresentation)); - - RoleRepresentation roleRepresentation = new RoleRepresentation(); - roleRepresentation.setName("user"); - RolesRepresentation rolesRepresentation = new RolesRepresentation(); - rolesRepresentation.setRealm(Arrays.asList(roleRepresentation)); - realm.setRoles(rolesRepresentation); - - server.importRealm(realm); - } - - private static void deployApp() { - - ResteasyDeployment resteasyDeployment = new ResteasyDeployment(); - DeploymentInfo deploymentInfo = new DeploymentInfo(); - deploymentInfo.setDeploymentName("app"); - deploymentInfo.setContextPath("/app"); - deploymentInfo.setClassLoader(ExcludedResourceTest.class.getClassLoader()); - - ServletInfo servletInfo = new ServletInfo("post", PostServlet.class); - servletInfo.addMappings("/public"); - servletInfo.addMappings("/secure"); - deploymentInfo.addServlet(servletInfo); - - - SecurityConstraint publicConstraint = new SecurityConstraint(); - WebResourceCollection publicResource = new WebResourceCollection(); - publicResource.addUrlPattern("/public/*"); - publicConstraint.addWebResourceCollection(publicResource); - publicConstraint.setEmptyRoleSemantic(SecurityInfo.EmptyRoleSemantic.PERMIT); - deploymentInfo.addSecurityConstraint(publicConstraint); - - SecurityConstraint secureConstraint = new SecurityConstraint(); - WebResourceCollection secureResources = new WebResourceCollection(); - secureResources.addUrlPattern("/*"); - secureConstraint.addWebResourceCollection(secureResources); - secureConstraint.addRoleAllowed("user"); - deploymentInfo.addSecurityConstraint(secureConstraint); - deploymentInfo.addSecurityRole("user"); - - deploymentInfo.setLoginConfig(new LoginConfig("KEYCLOAK", "test")); - - deploymentInfo.addInitParameter("keycloak.config.file", ExcludedResourceTest.class.getResource("keycloak.json").getFile()); - - server.getServer().deploy(deploymentInfo); - } - - @AfterClass - public static void after() { - server.stop(); - } - - @Test - public void testPublicWithoutToken() throws InterruptedException { - Response post = ClientBuilder.newClient() - .target("http://localhost:8081/app") - .path("public") - .request() - .post(Entity.entity("Hallo", MediaType.TEXT_PLAIN_TYPE)); - - String response = post.readEntity(String.class); - Assert.assertEquals("you said: Hallo", response); - } - - @Test - public void testSecureWithoutToken() throws InterruptedException { - Response post = ClientBuilder.newClient() - .target("http://localhost:8081/app") - .path("secure") - .request() - .post(Entity.entity("Hallo", MediaType.TEXT_PLAIN_TYPE)); - - //Redirect to login - Assert.assertEquals(302, post.getStatusInfo().getStatusCode()); - } - @Test - public void testSecureWithToken() throws InterruptedException, JSONException { - Form form = new Form(); - form.param("username","user"); - form.param("password","password"); - form.param("client_id","app"); - - AccessTokenResponse token = ClientBuilder.newClient() - .target("http://localhost:8081/auth") - .path("/realms/test/tokens/grants/access") - .request(MediaType.APPLICATION_JSON_TYPE) - .post(Entity.form(form)) - .readEntity(AccessTokenResponse.class); - - Response post = ClientBuilder.newClient() - .target("http://localhost:8081/app") - .path("secure") - .request() - .header("Authorization", "Bearer " + token.getToken()) - .post(Entity.entity("Hallo", MediaType.TEXT_PLAIN_TYPE)); - - String response = post.readEntity(String.class); - Assert.assertEquals("Hello user, you said: Hallo", response); - - } - - @Test - public void testPublicWithToken() throws InterruptedException, JSONException { - Form form = new Form(); - form.param("username","user"); - form.param("password","password"); - form.param("client_id","app"); - - AccessTokenResponse token = ClientBuilder.newClient() - .target("http://localhost:8081/auth") - .path("/realms/test/tokens/grants/access") - .request(MediaType.APPLICATION_JSON_TYPE) - .post(Entity.form(form)) - .readEntity(AccessTokenResponse.class); - - Response post = ClientBuilder.newClient() - .target("http://localhost:8081/app") - .path("public") - .request() - .header("Authorization", "Bearer " + token.getToken()) - .post(Entity.entity("Hallo", MediaType.TEXT_PLAIN_TYPE)); - - String response = post.readEntity(String.class); - Assert.assertEquals("Hello user, you said: Hallo", response); - } - -} diff --git a/testsuite/integration/src/test/java/org/keycloak/testsuite/excluded/PostServlet.java b/testsuite/integration/src/test/java/org/keycloak/testsuite/excluded/PostServlet.java deleted file mode 100644 index 9c9c41f94f..0000000000 --- a/testsuite/integration/src/test/java/org/keycloak/testsuite/excluded/PostServlet.java +++ /dev/null @@ -1,29 +0,0 @@ -package org.keycloak.testsuite.excluded; - -import javax.servlet.ServletException; -import javax.servlet.annotation.WebServlet; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.util.Scanner; - -/** - * Created by michigerber on 21.12.14. - */ -public class PostServlet extends HttpServlet { - @Override - protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { - StringBuilder response = new StringBuilder(); - if(req.getUserPrincipal() != null){ - response.append("Hello "+req.getUserPrincipal().getName()).append(", "); - } - response.append("you said: "); - Scanner scanner = new Scanner(req.getInputStream()); - while(scanner.hasNext()){ - response.append(scanner.next()); - } - resp.getWriter().write(response.toString()); - } - -}