import java.util.Arrays;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import org.jasig.cas.authentication.ImmutableAuthentication;
import org.jasig.cas.authentication.principal.Service;
import org.jasig.cas.authentication.principal.SimplePrincipal;
import org.jasig.cas.authentication.principal.SimpleWebApplicationServiceImpl;
import org.jasig.cas.services.RegisteredService;
import org.jasig.cas.ticket.support.NeverExpiresExpirationPolicy;
import org.openiot.lsm.security.oauth.LSMOAuthHttpManager;
import org.openiot.lsm.security.oauth.LSMRegisteredServiceImpl;
import org.openiot.lsm.security.oauth.LSMServiceTicketImpl;
import org.openiot.lsm.security.oauth.LSMTicketGrantingTicketImpl;
import org.openiot.lsm.security.oauth.mgmt.Permission;
import org.openiot.lsm.security.oauth.mgmt.Role;
import org.openiot.lsm.security.oauth.mgmt.User;
import org.openiot.security.oauth.lsm.LSMOAuthManager;
public class TestLSMOAuthentication {
static String OAuthGraphURL = "http://lsm.deri.ie/OpenIoT/OAuth#";
public static User generateUser(String name, String email, String username, String password) {
User user = new User();
user.setName(name);
user.setUsername(username);
user.setEmail(email);
user.setPassword(password);
return user;
}
public static Role generateRole() {
Role role = new Role();
role.setDescription("Administrator role");
role.setName("admin");
role.setServiceId(1L);
Permission per = new Permission();
per.setDescription("Create new users");
per.setName("admin:create_user");
per.setServiceId(1L);
role.addPermission(per);
Permission per2 = new Permission();
per2.setDescription("Delete stream s1");
per2.setName("admin:delete_sensor:s1");
per.setServiceId(1L);
role.addPermission(per2);
Permission per3 = new Permission();
per3.setDescription("Delete existing users");
per3.setName("admin:delete_user");
per.setServiceId(1L);
role.addPermission(per3);
return role;
}
/**
* "*","All permissions" "admin:create_user","Create new users"
* "admin:delete_sensor:s1","Delete stream s1"
* "admin:delete_sensor:s2,s3","Delete streams s2 and s3"
* "admin:delete_user","Delete existing users" "sensor:discover:s1","View stream s1"
* "sensor:discover:s2","View stream s2" "sensor:query:s1","Query stream s1"
* "sensor:query:s2","Query stream s2"
*
* @return
*/
public static void generateAuthorizationData() {
LSMOAuthHttpManager oM = new LSMOAuthHttpManager(OAuthGraphURL);
User adminUser = generateUser("Administrator", "admin@example.com", "admin", "5ebe2294ecd0e0f08eab7690d2a6ee69");
User darkHelmetUser = generateUser("User P2", "darkh@example.com", "darkhelmet", "d9aaefa96ffeabb3a3bac5fdeadde3fa");
User lonestarrUser = generateUser("User P3", "lonestarr@example.com", "lonestarr", "960c8c80adfcc7eee97eb6ebad135642");
User presidentskroobUser = generateUser("User P1", "prskroob@example.com", "presidentskroob", "827ccb0eea8a706c4c34a16891f84e7b");
User[] users = new User[] { adminUser, darkHelmetUser, lonestarrUser, presidentskroobUser };
// Role adminRole = new Role("admin", "Administrator role", 1L);
Role adminRole5 = new Role("admin", "Administrator role", 5L);
// Role endUserRole = new Role("end_user", "End user role", 3L);
// Role schedulerRole = new Role("scheduler", "Scheduler role", 3L);
// Role serviceDefinerRole3 = new Role("service_definer", "Service definer role", 3L);
// Role serviceDefinerRole4 = new Role("service_definer", "Service definer role", 4L);
// Role visualizerRole = new Role("visualizer", "Data visualizer role", 3L);
//
// Role[] roles = new Role[] { adminRole, adminRole3, endUserRole, schedulerRole, serviceDefinerRole3, serviceDefinerRole4, visualizerRole };
//
// Permission allPerm = new Permission("*", "All permissions", 1L);
Permission allPerm5 = new Permission("*", "All permissions", 5L);
Permission createPermissionPerm5 = new Permission("admin:create_permissions", "Create new permissions", 5L);
// Permission adminDeleteSens2and3Perm3 = new Permission("admin:delete_sensor:s2,s3", "Delete streams s2 and s3", 3L);
// Permission sensorQuery1Perm3 = new Permission("sensor:query:s1", "Query stream s1", 3L);
// Permission sensorQuery2Perm4 = new Permission("sensor:query:s2", "Query stream s2", 4L);
//
// Permission[] permissions = new Permission[] { allPerm, allPerm3, adminDeleteSens2and3Perm3, sensorQuery1Perm3, sensorQuery2Perm4 };
//
adminRole5.addPermission(allPerm5);
adminRole5.addPermission(createPermissionPerm5);
// adminRole3.addPermission(allPerm3);
// serviceDefinerRole3.addPermission(adminDeleteSens2and3Perm3);
// serviceDefinerRole3.addPermission(sensorQuery1Perm3);
// serviceDefinerRole4.addPermission(sensorQuery2Perm4);
//
adminUser.addRole(adminRole5);
// presidentskroobUser.addRole(serviceDefinerRole3);
// darkHelmetUser.setRoles(Arrays.asList(new Role[] { schedulerRole, endUserRole }));
// lonestarrUser.setRoles(Arrays.asList(new Role[] { visualizerRole, endUserRole, serviceDefinerRole4 }));
//
//
// for (Permission perm : permissions)
// oM.addPermission(perm);
//
// for (Role role : roles)
// oM.addRole(role);
oM.addPermission(allPerm5);
oM.addPermission(createPermissionPerm5);
oM.addRole(adminRole5);
for (User user : users)
oM.addUser(user);
// oM.addPermission(allPerm5);
// oM.addRole(adminRole5);
// oM.addUser(adminUser);
}
public static List<LSMRegisteredServiceImpl> createDefaultServices() {
LSMRegisteredServiceImpl defaultService = new LSMRegisteredServiceImpl();
defaultService.setId(1L);
defaultService.setAllowedToProxy(true);
defaultService.setAnonymousAccess(false);
defaultService.setDescription("Service Manager");
defaultService.setEnabled(true);
defaultService.setEvaluationOrder(0);
defaultService.setIgnoreAttributes(true);
defaultService.setName("Service Manager");
defaultService.setServiceId("https://localhost:8443/openiot-cas/services/j_acegi_cas_security_check");
defaultService.setSsoEnabled(true);
LSMRegisteredServiceImpl httpService = new LSMRegisteredServiceImpl();
httpService.setId(2L);
httpService.setAllowedToProxy(true);
httpService.setAnonymousAccess(false);
httpService.setDescription("OAuth wrapper callback url");
httpService.setEnabled(true);
httpService.setEvaluationOrder(0);
httpService.setIgnoreAttributes(true);
httpService.setName("HTTP");
httpService.setServiceId("https://localhost:8443/openiot-cas/oauth2.0/callbackAuthorize");
httpService.setSsoEnabled(true);
LSMRegisteredServiceImpl oauthTestService1 = new LSMRegisteredServiceImpl();
oauthTestService1.setId(3L);
oauthTestService1.setAllowedToProxy(true);
oauthTestService1.setAnonymousAccess(false);
oauthTestService1.setDescription("testsecret1");
oauthTestService1.setEnabled(true);
oauthTestService1.setEvaluationOrder(0);
oauthTestService1.setIgnoreAttributes(false);
oauthTestService1.setName("testservice1");
oauthTestService1.setServiceId("http://localhost:9080/callback?client_name=CasOAuthWrapperClient");
oauthTestService1.setTheme("Service1");
oauthTestService1.setSsoEnabled(true);
LSMRegisteredServiceImpl oauthTestService2 = new LSMRegisteredServiceImpl();
oauthTestService2.setId(4L);
oauthTestService2.setAllowedToProxy(true);
oauthTestService2.setAnonymousAccess(false);
oauthTestService2.setDescription("testsecret2");
oauthTestService2.setEnabled(true);
oauthTestService2.setEvaluationOrder(0);
oauthTestService2.setIgnoreAttributes(false);
oauthTestService2.setName("testservice2");
oauthTestService2.setServiceId("http://localhost:7080/callback?client_name=CasOAuthWrapperClient");
oauthTestService2.setTheme("Service2");
oauthTestService2.setSsoEnabled(true);
return Arrays.asList(new LSMRegisteredServiceImpl[] { defaultService, httpService, oauthTestService1, oauthTestService2 });
}
public static LSMRegisteredServiceImpl createRegisteredService() {
LSMRegisteredServiceImpl reg_ser = new LSMRegisteredServiceImpl();
reg_ser.setId((long) 1);
reg_ser.setAllowedToProxy(true);
reg_ser.setAnonymousAccess(true);
reg_ser.setDescription("Service Manager");
reg_ser.setEnabled(true);
reg_ser.setEvaluationOrder(0);
reg_ser.setIgnoreAttributes(false);
reg_ser.setName("Service Manager");
reg_ser.setServiceId("https://localhost:8443/openiot-cas/services/j_acegi_cas_security_check");
reg_ser.setSsoEnabled(false);
return reg_ser;
}
public static LSMRegisteredServiceImpl createDefaultCASService() {
LSMRegisteredServiceImpl reg_ser = new LSMRegisteredServiceImpl();
reg_ser.setId((long) 1);
reg_ser.setAllowedToProxy(true);
reg_ser.setAnonymousAccess(false);
reg_ser.setDescription("Service Manager");
reg_ser.setEnabled(true);
reg_ser.setEvaluationOrder(0);
reg_ser.setIgnoreAttributes(false);
reg_ser.setName("Service Manager");
reg_ser.setServiceId("https://localhost:8443/openiot-cas/services/j_acegi_cas_security_check");
reg_ser.setSsoEnabled(true);
return reg_ser;
}
public static LSMRegisteredServiceImpl createDefaultHTTPService() {
LSMRegisteredServiceImpl reg_ser = new LSMRegisteredServiceImpl();
reg_ser.setId((long) 2);
reg_ser.setAllowedToProxy(true);
reg_ser.setAnonymousAccess(false);
reg_ser.setDescription("OAuth wrapper callback url");
reg_ser.setEnabled(true);
reg_ser.setEvaluationOrder(0);
reg_ser.setIgnoreAttributes(false);
reg_ser.setName("HTTP");
reg_ser.setServiceId("https://localhost:8443/openiot-cas/oauth2.0/callbackAuthorize");
reg_ser.setSsoEnabled(true);
return reg_ser;
}
public static LSMTicketGrantingTicketImpl createTicketGrantingTicket() {
LSMTicketGrantingTicketImpl tgt = new LSMTicketGrantingTicketImpl();
tgt.setId("TGT-1-0VPQMgR6P4OeVdAFK3O3CWxkKUZUaZlRPnEOOw9qIVIhj6tP9A-openiot.eu");
tgt.setCountOfUses(1);
tgt.setCreationTime(1385137975212L);
tgt.setExpirationPolicy(new NeverExpiresExpirationPolicy());
tgt.setLastTimeUsed(1385137975237L);
tgt.setPreviousLastTimeUsed(1385137975212L);
tgt.setExpired(false);
tgt.setAuthentication(new ImmutableAuthentication(new SimplePrincipal("sp-id")));
final HashMap<String, Service> services = new HashMap<String, Service>();
services.put("dummy-id", new SimpleWebApplicationServiceImpl("dummy-id"));
tgt.setServices(services);
tgt.setTicketGrantingTicket(null);
return tgt;
}
public static LSMTicketGrantingTicketImpl createTicketGrantingTicket(LSMTicketGrantingTicketImpl grantingTicket) {
LSMTicketGrantingTicketImpl tgt = new LSMTicketGrantingTicketImpl();
tgt.setId("TGT-2-eLPogT3jXcUd1chRvtqKH6Rxv49XbtXZfEp5qoR1ynhbGOlxIK-openiot.eu");
tgt.setCountOfUses(2);
tgt.setCreationTime(1385138057030L);
tgt.setExpirationPolicy(new NeverExpiresExpirationPolicy());
tgt.setLastTimeUsed(1385138114044L);
tgt.setPreviousLastTimeUsed(1385138057063L);
tgt.setExpired(false);
tgt.setAuthentication(new ImmutableAuthentication(new SimplePrincipal("sp-id2")));
final HashMap<String, Service> services = new HashMap<String, Service>();
services.put("dummy-id2", new SimpleWebApplicationServiceImpl("dummy-id2"));
tgt.setServices(services);
tgt.setTicketGrantingTicket(grantingTicket);
return tgt;
}
public static LSMServiceTicketImpl createServiceTicket(LSMTicketGrantingTicketImpl grantingTicket) {
LSMServiceTicketImpl serviceTicket = new LSMServiceTicketImpl();
serviceTicket.setId("ST-4-BF7u5cS33WUK5UJOoZyA-openiot.eu");
serviceTicket.setCountOfUses(0);
serviceTicket.setCreationTime(1385138114044L);
serviceTicket.setExpirationPolicy(new NeverExpiresExpirationPolicy());
serviceTicket.setLastTimeUsed(1385138114044L);
serviceTicket.setPreviousLastTimeUsed(0L);
serviceTicket.setFromNewLogin(false);
serviceTicket.setService(new SimpleWebApplicationServiceImpl("dummy-id3"));
serviceTicket.setTicketGrantingTicket(grantingTicket);
return serviceTicket;
}
/**
* @param args
*/
public static void main(String[] args) {
LSMOAuthManager oM = LSMOAuthManager.getInstance();
// for(LSMRegisteredServiceImpl rs : createDefaultServices())
// oM.addRegisteredService(rs);
//
generateAuthorizationData();
User userByUsername = oM.getUserByUsername("admin");
System.out.println(userByUsername);
System.out.println(userByUsername.getRoles().size());
System.out.println(userByUsername.getRoles().get(0));
System.out.println("Test____Role".matches(".*(\\s|__|/).*"));
// final LSMRegisteredServiceImpl registeredService = oM.getRegisteredService(100L);
// System.out.println("getUsernameAttribute() is null: " +
// registeredService.getUsernameAttribute() == null);
// System.out.println("getTheme(): " + registeredService.getTheme());
// System.out.println("getTheme() is null: " + registeredService.getTheme() == null);
// System.out.println("getTheme().equals(\"null\"): " +
// "null".equals(registeredService.getTheme()));
// System.out.println("isAnonymousAccess(): " + registeredService.isAnonymousAccess());
if (true)
return;
LSMTicketGrantingTicketImpl realTicket = oM.getTicketGranting("TGT-5-9ynOlGGcYiJxaQZxZpZceNgsmKLF5pXOUQadLhV7otqeQaUM9P-openiot.eu");
if (realTicket != null) {
System.out.println("LastTimeUsed: " + realTicket.getCreationTime() + " | " + new Date(realTicket.getCreationTime()));
System.out.println("isExpired(): " + realTicket.isExpired());
System.out.println("isExpiredInternal(): " + realTicket.isExpiredInternal());
System.out.println("getExpirationPolicy(): " + realTicket.getExpirationPolicy().getClass());
System.out.println("getExpirationPolicy(): " + realTicket.getAuthentication().getPrincipal().getId());
}
// oM.addRegisteredService(createDefaultCASService());
LSMRegisteredServiceImpl service = oM.getRegisteredService((long) 1);
System.out.println(service.getUsernameAttribute() == null);
System.out.println("isAnonymousAccess(): " + service.isAnonymousAccess());
if (true)
return;
// oM.addPermission(generatePermission("admin:create_user","Create new users"));
// oM.deletePermission("admin:create_user");
// oM.addRole(generateRole());
// oM.deleteRole("admin");
// oM.addUser(generateOAuthUser());
// oM.deleteUser("admin");
// oM.addRegisteredService(createRegisteredService());
// oM.deleteRegisteredService(1);
// User user = oM.getUser("admin");
// System.out.println(user.getRoles().size());
// LSMRegisteredServiceImpl service = oM.getRegisteredService((long)1);
// System.out.println(service.getId());
final LSMTicketGrantingTicketImpl tgt = createTicketGrantingTicket();
// oM.addTicketGrangtingTicket(tgt);
final LSMTicketGrantingTicketImpl ticketGranting = oM.getTicketGranting(tgt.getId());
System.out.println(ticketGranting);
// oM.deleteTicketGranting(tgt.getId());
// final LSMTicketGrantingTicketImpl ticketGranting2 = oM.getTicketGranting(tgt.getId());
// System.out.println(ticketGranting2);
final LSMTicketGrantingTicketImpl tgt2 = createTicketGrantingTicket(tgt);
// oM.addTicketGrangtingTicket(tgt2);
final LSMTicketGrantingTicketImpl ticketGranting2 = oM.getTicketGranting(tgt2.getId());
System.out.println(ticketGranting2);
if (ticketGranting2 != null)
System.out.println(ticketGranting2.getGrantingTicket());
// oM.deleteTicketGranting(tgt2.getId());
// final LSMTicketGrantingTicketImpl ticketGranting22 = oM.getTicketGranting(tgt2.getId());
// System.out.println(ticketGranting22);
final LSMServiceTicketImpl serviceTicket = createServiceTicket(tgt);
// oM.addServiceTicketImpl(serviceTicket);
LSMServiceTicketImpl serviceTicket2 = oM.getServiceTicketImpl(serviceTicket.getId());
System.out.println(serviceTicket2);
// oM.deleteServiceTicketImpl(serviceTicket.getId());
// serviceTicket2 = oM.getServiceTicketImpl(serviceTicket.getId());
// System.out.println(serviceTicket2);
//
// oM.deleteTicketGranting(tgt2.getId());
final List<LSMTicketGrantingTicketImpl> allTkts = oM.getAllTicketGrantingTickets();
System.out.println(allTkts.size());
if (!allTkts.isEmpty())
System.out.println(allTkts.get(0));
final List<LSMServiceTicketImpl> allTktsOf = oM.getAllServiceTicketsOfTicketGrantingTicket(tgt.getId());
System.out.println("allTktsOf size: " + allTktsOf.size());
if (!allTktsOf.isEmpty())
System.out.println(allTktsOf.get(0));
final List<LSMTicketGrantingTicketImpl> allGrantingTktsOf = oM.getAllTicketsOfTicketGrantingTicket(tgt.getId());
System.out.println("allGrantingTktsOf size: " + allGrantingTktsOf.size());
if (!allGrantingTktsOf.isEmpty())
System.out.println(allGrantingTktsOf.get(0));
final List<LSMServiceTicketImpl> allServiceTkts = oM.getAllServiceTickets();
System.out.println("allServiceTkts size: " + allServiceTkts.size());
if (!allServiceTkts.isEmpty())
System.out.println(allServiceTkts.get(0));
final User user = userByUsername;
if (user != null) {
System.out.println(user.getUsername());
System.out.println(user.getRoles().size());
} else
System.out.println("User admin is not found");
final List<RegisteredService> allRegisteredServices = oM.getAllRegisteredServices();
System.out.println("All registered services size:" + allRegisteredServices.size());
if (!allRegisteredServices.isEmpty())
System.out.println(allRegisteredServices.get(0));
final int ticketGrantingTicketsCount = oM.getTicketGrantingTicketsCount();
System.out.println("ticketGrantingTicketsCount: " + ticketGrantingTicketsCount);
final int serviceTicketsCount = oM.getServiceTicketsCount();
System.out.println("serviceTicketsCount: " + serviceTicketsCount);
}
}