protected void setUp() throws Exception { // we are jonny identityService.setAuthenticatedUserId("jonny"); // make sure we can do stuff: Authorization jonnyIsGod = authorizationService.createNewAuthorization(AUTH_TYPE_GRANT); jonnyIsGod.setUserId("jonny"); jonnyIsGod.setResource(USER); jonnyIsGod.setResourceId(ANY); jonnyIsGod.addPermission(ALL); authorizationService.saveAuthorization(jonnyIsGod); jonnyIsGod = authorizationService.createNewAuthorization(AUTH_TYPE_GRANT); jonnyIsGod.setUserId("jonny"); jonnyIsGod.setResource(GROUP); jonnyIsGod.setResourceId(ANY); jonnyIsGod.addPermission(ALL); authorizationService.saveAuthorization(jonnyIsGod); jonnyIsGod = authorizationService.createNewAuthorization(AUTH_TYPE_GRANT); jonnyIsGod.setUserId("jonny"); jonnyIsGod.setResource(AUTHORIZATION); jonnyIsGod.setResourceId(ANY); jonnyIsGod.addPermission(ALL); authorizationService.saveAuthorization(jonnyIsGod); // enable authorizations processEngineConfiguration.setAuthorizationEnabled(true); super.setUp(); }
public void testPermissions() { Authorization authorization = authorizationService.createNewAuthorization(AUTH_TYPE_GRANT); assertEquals(0, authorization.getPermissions()); assertFalse(authorization.hasPermission(ACCESS)); assertFalse(authorization.hasPermission(DELETE)); assertFalse(authorization.hasPermission(READ)); assertFalse(authorization.hasPermission(UPDATE)); authorization.addPermission(ACCESS); assertTrue(authorization.hasPermission(ACCESS)); assertFalse(authorization.hasPermission(DELETE)); assertFalse(authorization.hasPermission(READ)); assertFalse(authorization.hasPermission(UPDATE)); authorization.addPermission(DELETE); assertTrue(authorization.hasPermission(ACCESS)); assertTrue(authorization.hasPermission(DELETE)); assertFalse(authorization.hasPermission(READ)); assertFalse(authorization.hasPermission(UPDATE)); authorization.addPermission(READ); assertTrue(authorization.hasPermission(ACCESS)); assertTrue(authorization.hasPermission(DELETE)); assertTrue(authorization.hasPermission(READ)); assertFalse(authorization.hasPermission(UPDATE)); authorization.addPermission(UPDATE); assertTrue(authorization.hasPermission(ACCESS)); assertTrue(authorization.hasPermission(DELETE)); assertTrue(authorization.hasPermission(READ)); assertTrue(authorization.hasPermission(UPDATE)); authorization.removePermission(ACCESS); assertFalse(authorization.hasPermission(ACCESS)); assertTrue(authorization.hasPermission(DELETE)); assertTrue(authorization.hasPermission(READ)); assertTrue(authorization.hasPermission(UPDATE)); authorization.removePermission(DELETE); assertFalse(authorization.hasPermission(ACCESS)); assertFalse(authorization.hasPermission(DELETE)); assertTrue(authorization.hasPermission(READ)); assertTrue(authorization.hasPermission(UPDATE)); authorization.removePermission(READ); assertFalse(authorization.hasPermission(ACCESS)); assertFalse(authorization.hasPermission(DELETE)); assertFalse(authorization.hasPermission(READ)); assertTrue(authorization.hasPermission(UPDATE)); authorization.removePermission(UPDATE); assertFalse(authorization.hasPermission(ACCESS)); assertFalse(authorization.hasPermission(DELETE)); assertFalse(authorization.hasPermission(READ)); assertFalse(authorization.hasPermission(UPDATE)); }
public void testUserOverrideGlobalRevokeAuthorizationCheck() { TestResource resource1 = new TestResource("resource1", 100); // create global authorization which revokes all permissions to all users (on resource1): Authorization globalGrant = authorizationService.createNewAuthorization(AUTH_TYPE_GLOBAL); globalGrant.setResource(resource1); globalGrant.setResourceId(ANY); globalGrant.removePermission(ALL); authorizationService.saveAuthorization(globalGrant); // add READ for jonny Authorization localRevoke = authorizationService.createNewAuthorization(AUTH_TYPE_GRANT); localRevoke.setUserId("jonny"); localRevoke.setResource(resource1); localRevoke.setResourceId(ANY); localRevoke.addPermission(READ); authorizationService.saveAuthorization(localRevoke); // jonny does not have ALL permissions assertFalse(authorizationService.isUserAuthorized("jonny", null, ALL, resource1)); // jonny can read assertTrue(authorizationService.isUserAuthorized("jonny", null, READ, resource1)); // jonny can't delete assertFalse(authorizationService.isUserAuthorized("jonny", null, DELETE, resource1)); // someone else can't do anything assertFalse(authorizationService.isUserAuthorized("someone else", null, ALL, resource1)); assertFalse(authorizationService.isUserAuthorized("someone else", null, READ, resource1)); assertFalse(authorizationService.isUserAuthorized("someone else", null, DELETE, resource1)); }
public void testGlobalGrantAuthorizationCheck() { TestResource resource1 = new TestResource("resource1", 100); // create global authorization which grants all permissions to all users (on resource1): Authorization globalAuth = authorizationService.createNewAuthorization(AUTH_TYPE_GLOBAL); globalAuth.setResource(resource1); globalAuth.setResourceId(ANY); globalAuth.addPermission(ALL); authorizationService.saveAuthorization(globalAuth); List<String> jonnysGroups = Arrays.asList(new String[] {"sales", "marketing"}); List<String> someOneElsesGroups = Arrays.asList(new String[] {"marketing"}); // this authorizes any user to do anything in this resource: assertTrue(authorizationService.isUserAuthorized("jonny", null, ALL, resource1)); assertTrue(authorizationService.isUserAuthorized("jonny", jonnysGroups, ALL, resource1)); assertTrue(authorizationService.isUserAuthorized("someone", null, CREATE, resource1)); assertTrue( authorizationService.isUserAuthorized("someone", someOneElsesGroups, CREATE, resource1)); assertTrue(authorizationService.isUserAuthorized("someone else", null, DELETE, resource1)); assertTrue(authorizationService.isUserAuthorized("jonny", null, ALL, resource1, "someId")); assertTrue( authorizationService.isUserAuthorized("jonny", jonnysGroups, ALL, resource1, "someId")); assertTrue(authorizationService.isUserAuthorized("someone", null, CREATE, resource1, "someId")); assertTrue( authorizationService.isUserAuthorized( "someone else", null, DELETE, resource1, "someOtherId")); }
public void testUserOverrideGroupOverrideGlobalAuthorizationCheck() { TestResource resource1 = new TestResource("resource1", 100); // create global authorization which grants all permissions to all users (on resource1): Authorization globalGrant = authorizationService.createNewAuthorization(AUTH_TYPE_GLOBAL); globalGrant.setResource(resource1); globalGrant.setResourceId(ANY); globalGrant.addPermission(ALL); authorizationService.saveAuthorization(globalGrant); // revoke READ for group "sales" Authorization groupRevoke = authorizationService.createNewAuthorization(AUTH_TYPE_REVOKE); groupRevoke.setGroupId("sales"); groupRevoke.setResource(resource1); groupRevoke.setResourceId(ANY); groupRevoke.removePermission(READ); authorizationService.saveAuthorization(groupRevoke); // add READ for jonny Authorization userGrant = authorizationService.createNewAuthorization(AUTH_TYPE_GRANT); userGrant.setUserId("jonny"); userGrant.setResource(resource1); userGrant.setResourceId(ANY); userGrant.addPermission(READ); authorizationService.saveAuthorization(userGrant); List<String> jonnysGroups = Arrays.asList(new String[] {"sales", "marketing"}); List<String> someOneElsesGroups = Arrays.asList(new String[] {"marketing"}); // jonny can read assertTrue(authorizationService.isUserAuthorized("jonny", jonnysGroups, READ, resource1)); assertTrue(authorizationService.isUserAuthorized("jonny", null, READ, resource1)); // someone else in the same groups cannot assertFalse( authorizationService.isUserAuthorized("someone else", jonnysGroups, READ, resource1)); // someone else in different groups can assertTrue( authorizationService.isUserAuthorized("someone else", someOneElsesGroups, READ, resource1)); }
public void testUpdatePersistentAuthorization() { TestResource resource1 = new TestResource("resource1", 100); TestResource resource2 = new TestResource("resource1", 101); Authorization authorization = authorizationService.createNewAuthorization(AUTH_TYPE_GRANT); authorization.setUserId("aUserId"); authorization.setResource(resource1); authorization.setResourceId("aResourceId"); authorization.addPermission(ACCESS); // save the authorization authorizationService.saveAuthorization(authorization); // validate authorization Authorization savedAuthorization = authorizationService.createAuthorizationQuery().singleResult(); assertEquals("aUserId", savedAuthorization.getUserId()); assertEquals(resource1.resourceType(), savedAuthorization.getResourceType()); assertEquals("aResourceId", savedAuthorization.getResourceId()); assertTrue(savedAuthorization.hasPermission(ACCESS)); // update authorization savedAuthorization.setUserId("anotherUserId"); savedAuthorization.setResource(resource2); savedAuthorization.setResourceId("anotherResourceId"); savedAuthorization.addPermission(DELETE); authorizationService.saveAuthorization(savedAuthorization); // validate authorization updated savedAuthorization = authorizationService.createAuthorizationQuery().singleResult(); assertEquals("anotherUserId", savedAuthorization.getUserId()); assertEquals(resource2.resourceType(), savedAuthorization.getResourceType()); assertEquals("anotherResourceId", savedAuthorization.getResourceId()); assertTrue(savedAuthorization.hasPermission(ACCESS)); assertTrue(savedAuthorization.hasPermission(DELETE)); }
public void testGroupOverrideGlobalGrantAuthorizationCheck() { TestResource resource1 = new TestResource("resource1", 100); // create global authorization which grants all permissions to all users (on resource1): Authorization globalGrant = authorizationService.createNewAuthorization(AUTH_TYPE_GLOBAL); globalGrant.setResource(resource1); globalGrant.setResourceId(ANY); globalGrant.addPermission(ALL); authorizationService.saveAuthorization(globalGrant); // revoke READ for group "sales" Authorization groupRevoke = authorizationService.createNewAuthorization(AUTH_TYPE_REVOKE); groupRevoke.setGroupId("sales"); groupRevoke.setResource(resource1); groupRevoke.setResourceId(ANY); groupRevoke.removePermission(READ); authorizationService.saveAuthorization(groupRevoke); List<String> jonnysGroups = Arrays.asList(new String[] {"sales", "marketing"}); List<String> someOneElsesGroups = Arrays.asList(new String[] {"marketing"}); // jonny does not have ALL permissions if queried with groups assertFalse(authorizationService.isUserAuthorized("jonny", jonnysGroups, ALL, resource1)); // if queried without groups he has assertTrue(authorizationService.isUserAuthorized("jonny", null, ALL, resource1)); // jonny can't read if queried with groups assertFalse(authorizationService.isUserAuthorized("jonny", jonnysGroups, READ, resource1)); // if queried without groups he has assertTrue(authorizationService.isUserAuthorized("jonny", null, READ, resource1)); // someone else who is in group "marketing" but but not "sales" can assertTrue( authorizationService.isUserAuthorized("someone else", someOneElsesGroups, ALL, resource1)); assertTrue( authorizationService.isUserAuthorized("someone else", someOneElsesGroups, READ, resource1)); assertTrue(authorizationService.isUserAuthorized("someone else", null, ALL, resource1)); assertTrue(authorizationService.isUserAuthorized("someone else", null, READ, resource1)); // he could'nt if he were in jonny's groups assertFalse( authorizationService.isUserAuthorized("someone else", jonnysGroups, ALL, resource1)); assertFalse( authorizationService.isUserAuthorized("someone else", jonnysGroups, READ, resource1)); // jonny can still delete assertTrue(authorizationService.isUserAuthorized("jonny", jonnysGroups, DELETE, resource1)); assertTrue(authorizationService.isUserAuthorized("jonny", null, DELETE, resource1)); }
public void testUserOverrideGlobalGrantAuthorizationCheck() { TestResource resource1 = new TestResource("resource1", 100); // create global authorization which grants all permissions to all users (on resource1): Authorization globalGrant = authorizationService.createNewAuthorization(AUTH_TYPE_GLOBAL); globalGrant.setResource(resource1); globalGrant.setResourceId(ANY); globalGrant.addPermission(ALL); authorizationService.saveAuthorization(globalGrant); // revoke READ for jonny Authorization localRevoke = authorizationService.createNewAuthorization(AUTH_TYPE_REVOKE); localRevoke.setUserId("jonny"); localRevoke.setResource(resource1); localRevoke.setResourceId(ANY); localRevoke.removePermission(READ); authorizationService.saveAuthorization(localRevoke); List<String> jonnysGroups = Arrays.asList(new String[] {"sales", "marketing"}); List<String> someOneElsesGroups = Arrays.asList(new String[] {"marketing"}); // jonny does not have ALL permissions assertFalse(authorizationService.isUserAuthorized("jonny", null, ALL, resource1)); assertFalse(authorizationService.isUserAuthorized("jonny", jonnysGroups, ALL, resource1)); // jonny can't read assertFalse(authorizationService.isUserAuthorized("jonny", null, READ, resource1)); assertFalse(authorizationService.isUserAuthorized("jonny", jonnysGroups, READ, resource1)); // someone else can assertTrue(authorizationService.isUserAuthorized("someone else", null, ALL, resource1)); assertTrue( authorizationService.isUserAuthorized("someone else", someOneElsesGroups, READ, resource1)); assertTrue(authorizationService.isUserAuthorized("someone else", null, ALL, resource1)); assertTrue( authorizationService.isUserAuthorized("someone else", someOneElsesGroups, READ, resource1)); // jonny can still delete assertTrue(authorizationService.isUserAuthorized("jonny", null, DELETE, resource1)); assertTrue(authorizationService.isUserAuthorized("jonny", jonnysGroups, DELETE, resource1)); }