diff --git a/restservice/pom.xml b/restservice/pom.xml
index 60714c1..773be7a 100755
--- a/restservice/pom.xml
+++ b/restservice/pom.xml
@@ -57,6 +57,13 @@
test
+
+
+ org.jasig.cas.client
+ cas-client-core
+ 3.6.2
+
+
org.springframework.boot
spring-boot-starter-security
diff --git a/restservice/src/main/java/com/plannaplan/controllers/TokenController.java b/restservice/src/main/java/com/plannaplan/controllers/TokenController.java
index f6e35e3..8e06c2e 100755
--- a/restservice/src/main/java/com/plannaplan/controllers/TokenController.java
+++ b/restservice/src/main/java/com/plannaplan/controllers/TokenController.java
@@ -1,6 +1,7 @@
package com.plannaplan.controllers;
import com.plannaplan.exceptions.UserNotFoundException;
+import com.plannaplan.security.cas.CasUserIdentity;
import com.plannaplan.security.cas.CasValidationExcepiton;
import com.plannaplan.security.cas.DefaultUAMCasValidator;
import com.plannaplan.services.UserService;
@@ -34,7 +35,8 @@ public class TokenController {
final DefaultUAMCasValidator validator = new DefaultUAMCasValidator(SERVICE_URL, ticket);
try {
- String authority = validator.validate();
+ CasUserIdentity casUserIdentity = validator.validate();
+ String authority = casUserIdentity.getEmail();
String token = this.userService.login(authority);
return new ResponseEntity<>(token, HttpStatus.OK);
} catch (CasValidationExcepiton e) {
diff --git a/restservice/src/main/java/com/plannaplan/security/cas/CasUserIdentity.java b/restservice/src/main/java/com/plannaplan/security/cas/CasUserIdentity.java
new file mode 100644
index 0000000..90b1f5e
--- /dev/null
+++ b/restservice/src/main/java/com/plannaplan/security/cas/CasUserIdentity.java
@@ -0,0 +1,19 @@
+package com.plannaplan.security.cas;
+
+public class CasUserIdentity {
+ private String usosId;
+ private String email;
+
+ public CasUserIdentity(String usosId, String email){
+ this.usosId = usosId;
+ this.email = email;
+ }
+
+ public String getUsosId() {
+ return usosId;
+ }
+
+ public String getEmail() {
+ return email;
+ }
+}
\ No newline at end of file
diff --git a/restservice/src/main/java/com/plannaplan/security/cas/CasValidator.java b/restservice/src/main/java/com/plannaplan/security/cas/CasValidator.java
index 8cde61c..b091e42 100644
--- a/restservice/src/main/java/com/plannaplan/security/cas/CasValidator.java
+++ b/restservice/src/main/java/com/plannaplan/security/cas/CasValidator.java
@@ -2,6 +2,5 @@ package com.plannaplan.security.cas;
public interface CasValidator {
- String validate();
-
+ CasUserIdentity validate();
}
diff --git a/restservice/src/main/java/com/plannaplan/security/cas/CustomUAMCasValidator.java b/restservice/src/main/java/com/plannaplan/security/cas/CustomUAMCasValidator.java
index 764be01..9a845df 100644
--- a/restservice/src/main/java/com/plannaplan/security/cas/CustomUAMCasValidator.java
+++ b/restservice/src/main/java/com/plannaplan/security/cas/CustomUAMCasValidator.java
@@ -17,23 +17,25 @@ public class CustomUAMCasValidator implements CasValidator {
}
@Override
- public String validate() {
+ public CasUserIdentity validate() {
/*
* TO DO
* Dodać case z CAS10/CAS20/CAS30
*/
- Cas20ServiceTicketValidator validator = new Cas20ServiceTicketValidator(CustomUAMCasValidator.CAS_URL);
+ final Cas20ServiceTicketValidator validator = new Cas20ServiceTicketValidator(CustomUAMCasValidator.CAS_URL);
try {
- Assertion assertion = validator.validate(this.ticket, this.service);
+ final Assertion assertion = validator.validate(this.ticket, this.service);
+
if (assertion == null) {
throw new CasValidationExcepiton("Validation failed. Assertion could not be retrieved for ticket " + "");
}
- String usosid = assertion.getPrincipal().getAttributes().get(CustomUAMCasValidator.USOS_ID).toString();
- String mail = assertion.getPrincipal().getAttributes().get(CustomUAMCasValidator.EMAIL_FIELD).toString();
- System.out.println(usosid);
- System.out.println(mail);
+ final String usosid = assertion.getPrincipal().getAttributes().get(CustomUAMCasValidator.USOS_ID).toString();
+
+ final String mail = assertion.getPrincipal().getAttributes().get(CustomUAMCasValidator.EMAIL_FIELD).toString();
+
+ return new CasUserIdentity(usosid,mail);
} catch (TicketValidationException e) {
e.printStackTrace();
diff --git a/restservice/src/main/java/com/plannaplan/security/cas/DefaultUAMCasValidator.java b/restservice/src/main/java/com/plannaplan/security/cas/DefaultUAMCasValidator.java
index b5c2ad6..e79a410 100755
--- a/restservice/src/main/java/com/plannaplan/security/cas/DefaultUAMCasValidator.java
+++ b/restservice/src/main/java/com/plannaplan/security/cas/DefaultUAMCasValidator.java
@@ -21,7 +21,7 @@ public class DefaultUAMCasValidator implements CasValidator {
}
@Override
- public String validate() {
+ public CasUserIdentity validate() {
try {
HttpGet request = new HttpGet(DefaultUAMCasValidator.CAS_URL + "/validate?service="
+ URLEncoder.encode(this.service, "UTF-8") + "&ticket=" + URLEncoder.encode(this.ticket, "UTF-8"));
@@ -39,7 +39,7 @@ public class DefaultUAMCasValidator implements CasValidator {
}
String res = result.substring(result.indexOf('\n') + 1);
- return res;
+ return new CasUserIdentity(null,res);
}
}
diff --git a/restservice/src/test/java/com/plannaplan/security/cas/DefaultUAMCasValidatorTest.java b/restservice/src/test/java/com/plannaplan/security/cas/DefaultUAMCasValidatorTest.java
index 7ebb5c3..1373e93 100755
--- a/restservice/src/test/java/com/plannaplan/security/cas/DefaultUAMCasValidatorTest.java
+++ b/restservice/src/test/java/com/plannaplan/security/cas/DefaultUAMCasValidatorTest.java
@@ -26,7 +26,7 @@ public class DefaultUAMCasValidatorTest {
public void shouldNotValidateTicket() {
final DefaultUAMCasValidator validator = new DefaultUAMCasValidator("http://localhost:3000", "notticket");
try {
- assertTrue(validator.validate().trim().equals(""));
+ assertTrue(validator.validate().getEmail().trim().equals(""));
} catch (CasValidationExcepiton e) {
assertTrue(true);
} catch (Exception e) {