From c9f50c5b160a33ed8a5abcf206aad786c5119277 Mon Sep 17 00:00:00 2001 From: Filip Izydorczyk Date: Fri, 11 Sep 2020 14:12:13 +0200 Subject: [PATCH] Cas update --- .../controllers/TokenController.java | 21 +++++++++++++++++++ .../security/CasValidationExcepiton.java | 13 ++++++++++++ .../com/plannaplan/security/CasValidator.java | 7 +++++-- .../plannaplan/security/CasValidatorTest.java | 21 ++++++++++++++++++- 4 files changed, 59 insertions(+), 3 deletions(-) create mode 100644 restservice/src/main/java/com/plannaplan/controllers/TokenController.java create mode 100644 restservice/src/main/java/com/plannaplan/security/CasValidationExcepiton.java diff --git a/restservice/src/main/java/com/plannaplan/controllers/TokenController.java b/restservice/src/main/java/com/plannaplan/controllers/TokenController.java new file mode 100644 index 0000000..d23b931 --- /dev/null +++ b/restservice/src/main/java/com/plannaplan/controllers/TokenController.java @@ -0,0 +1,21 @@ +package com.plannaplan.controllers; + +import com.plannaplan.security.CasValidator; + +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.CrossOrigin; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@CrossOrigin +public class TokenController { + + public static String SERVICE_URL = "http://localhost:3000"; + + // @GetMapping("/token") + // public ResponseEntity getToken(@RequestParam("ticket") final String ticket) { + // CasValidator validator = new CasValidator(SERVICE_URL,ticket); + // } +} diff --git a/restservice/src/main/java/com/plannaplan/security/CasValidationExcepiton.java b/restservice/src/main/java/com/plannaplan/security/CasValidationExcepiton.java new file mode 100644 index 0000000..88f3f5b --- /dev/null +++ b/restservice/src/main/java/com/plannaplan/security/CasValidationExcepiton.java @@ -0,0 +1,13 @@ +package com.plannaplan.security; + +public class CasValidationExcepiton extends RuntimeException { + /** + * + */ + private static final long serialVersionUID = 1L; + + public CasValidationExcepiton(String s) { + super(s); + } + +} diff --git a/restservice/src/main/java/com/plannaplan/security/CasValidator.java b/restservice/src/main/java/com/plannaplan/security/CasValidator.java index 4af59b2..9813758 100644 --- a/restservice/src/main/java/com/plannaplan/security/CasValidator.java +++ b/restservice/src/main/java/com/plannaplan/security/CasValidator.java @@ -20,7 +20,7 @@ public class CasValidator { this.ticket = ticket; } - public String validate() throws Exception { + public String validate() throws Exception, CasValidationExcepiton{ HttpGet request = new HttpGet(CasValidator.CAS_URL + "/validate?service=" + URLEncoder.encode(this.service, "UTF-8") + "&ticket=" + URLEncoder.encode(this.ticket, "UTF-8")); try (CloseableHttpResponse response = httpClient.execute(request)) { @@ -31,8 +31,11 @@ public class CasValidator { if (entity != null) { // return it as a String result = EntityUtils.toString(entity); - + if(result.replace("\n", "").trim().equals("no")){ + throw new CasValidationExcepiton("Validation failed"); + } } + String res = result.substring(result.indexOf('\n') + 1); return res; diff --git a/restservice/src/test/java/com/plannaplan/security/CasValidatorTest.java b/restservice/src/test/java/com/plannaplan/security/CasValidatorTest.java index 234a759..f825874 100644 --- a/restservice/src/test/java/com/plannaplan/security/CasValidatorTest.java +++ b/restservice/src/test/java/com/plannaplan/security/CasValidatorTest.java @@ -1,5 +1,7 @@ package com.plannaplan.security; +import static org.junit.jupiter.api.Assertions.assertTrue; + import org.junit.Ignore; import org.junit.Test; @@ -14,8 +16,25 @@ public class CasValidatorTest { try { System.out.println(validator.validate()); } catch (Exception e) { - // TODO Auto-generated catch block e.printStackTrace(); + assertTrue(false); + } + } + + @Test + public void shouldNotValidateTicket() { + //you need to privide fresh ticket to make this test pass that's why it is marked as ignored + CasValidator validator = new CasValidator("http://localhost:3000", + "notticket"); + try { + assertTrue(validator.validate().trim().equals("")); + } + catch (CasValidationExcepiton e){ + assertTrue(true); + } + catch (Exception e) { + e.printStackTrace(); + assertTrue(false); } } }