Example usage for org.apache.shiro.authc SaltedAuthenticationInfo getCredentials

List of usage examples for org.apache.shiro.authc SaltedAuthenticationInfo getCredentials

Introduction

In this page you can find the example usage for org.apache.shiro.authc SaltedAuthenticationInfo getCredentials.

Prototype

Object getCredentials();

Source Link

Document

Returns the credentials associated with the corresponding Subject.

Usage

From source file:com.epimorphics.registry.security.TestDBUserStore.java

License:Apache License

@Test
public void testStore() throws InterruptedException {
    // Register/*from  w  w w  . ja  v  a 2 s.  c  o m*/
    store.register(new UserInfo(ALICE_ID, ALICE_NAME));
    store.register(new UserInfo(BOB_ID, BOB_NAME));
    UserRecord record = store.getRecord(ALICE_ID);
    assertEquals(ALICE_NAME, record.name);
    assertNotNull(record.salt);
    assertNull(record.getPasword());

    record = store.getRecord(BOB_ID);
    assertEquals(BOB_NAME, record.name);

    SaltedAuthenticationInfo info = store.checkUser(ALICE_ID);
    assertEquals(ALICE_NAME, ((UserInfo) info.getPrincipals().getPrimaryPrincipal()).getName());

    // Check credentials management
    record = store.getRecord(ALICE_ID);
    record.setPassword(ByteSource.Util.bytes("my password"), 10);
    String expectedPassword = record.password;
    store.setCredentials(ALICE_ID, ByteSource.Util.bytes("my password"), 10);
    record = store.getRecord(ALICE_ID);
    assertNotNull(record.getPasword());
    assertEquals(expectedPassword, record.password);

    store.removeCredentials(ALICE_ID);
    record = store.getRecord(ALICE_ID);
    assertNull(record.getPasword());

    store.setCredentials(ALICE_ID, ByteSource.Util.bytes("my password"), 0);
    Thread.sleep(10);
    info = store.checkUser(ALICE_ID);
    String password = (String) info.getCredentials();
    assertTrue(password == null || password.isEmpty());

    // Check permissions management
    store.addPermision(ALICE_ID, new RegPermission("Update", "/reg2"));
    Set<Permission> permissions = store.getPermissions(ALICE_ID).getObjectPermissions();
    assertEquals(1, permissions.size());
    assertEquals("Update:/reg2", permissions.iterator().next().toString());

    store.addPermision(ALICE_ID, new RegPermission("Register", "/reg1"));
    store.addPermision(ALICE_ID, new RegPermission("Register,StatusUpdate", "/reg2"));
    store.addPermision(BOB_ID, new RegPermission("StatusUpdate", "/reg2"));
    permissions = store.getPermissions(ALICE_ID).getObjectPermissions();
    assertEquals(3, permissions.size());

    List<UserPermission> authusers = store.authorizedOn("/reg2");
    assertEquals(3, authusers.size());
    Collections.sort(authusers, new Comparator<UserPermission>() {
        @Override
        public int compare(UserPermission o1, UserPermission o2) {
            int nameCompare = o1.getUser().getName().compareTo(o2.getUser().getName());
            if (nameCompare == 0) {
                return o1.getPermissions().compareTo(o2.getPermissions());
            } else {
                return nameCompare;
            }
        }
    });
    assertEquals(ALICE_NAME, authusers.get(0).getUser().getName());
    assertEquals(ALICE_NAME, authusers.get(1).getUser().getName());
    assertEquals("Update", authusers.get(1).getPermissions());
    assertEquals(BOB_NAME, authusers.get(2).getUser().getName());

    store.removePermission(ALICE_ID, "/reg2");
    permissions = store.getPermissions(ALICE_ID).getObjectPermissions();
    assertEquals(1, permissions.size());
    assertEquals("Register:/reg1", permissions.iterator().next().toString());

    store.addPermision(ALICE_ID, new RegPermission("Update", "/reg3/_item"));
    assertEquals(1, store.authorizedOn("/reg3/_item").size());
    assertEquals(1, store.authorizedOn("/reg3/item").size());

    RegAuthorizationInfo auth = store.getPermissions(ALICE_ID);
    Set<String> roles = auth.getRoles();
    assertTrue(roles == null || roles.isEmpty());
    assertEquals(0, store.listAdminUsers().size());
    store.setRole(ALICE_ID, RegAuthorizationInfo.ADMINSTRATOR_ROLE);
    roles = store.getPermissions(ALICE_ID).getRoles();
    assertFalse(roles.isEmpty());
    assertEquals(RegAuthorizationInfo.ADMINSTRATOR_ROLE, roles.iterator().next());
    List<UserInfo> admins = store.listAdminUsers();
    assertEquals(1, admins.size());
    assertEquals(ALICE_ID, admins.get(0).getOpenid());

    // Check listing users
    store.register(new UserInfo("http://example.com/bob2", "Sponge Bob"));
    store.register(new UserInfo("http://example.com/bob3", "Bob Le Ponge"));
    List<UserInfo> bobs = store.listUsers("Bob");
    assertTrue(bobs.size() == 3);
    assertEquals(BOB_NAME, bobs.get(0).getName());
    assertEquals("Sponge Bob", bobs.get(2).getName());

    // Check removal
    store.unregister(ALICE_ID);
    assertNull(store.checkUser(ALICE_ID));
}