private void modifyAuthorities(final DistinguishedName userDn, final Collection<? extends GrantedAuthority> authorities, final int modType) { template.executeReadWrite(new ContextExecutor() { public Object executeWithContext(DirContext ctx) throws NamingException { for (GrantedAuthority authority : authorities) { String group = convertAuthorityToGroup(authority); DistinguishedName fullDn = LdapUtils.getFullDn(userDn, ctx); ModificationItem addGroup = new ModificationItem(modType, new BasicAttribute(groupMemberAttributeName, fullDn.toUrl())); ctx.modifyAttributes(buildGroupDn(group), new ModificationItem[] { addGroup }); } return null; } }); }
private void changePasswordUsingExtensionOperation (DistinguishedName userDn, String oldPassword, String newPassword) { template.executeReadWrite(dirCtx -> { LdapContext ctx = (LdapContext) dirCtx; String userIdentity = LdapUtils.getFullDn(userDn, ctx).encode(); PasswordModifyRequest request = new PasswordModifyRequest(userIdentity, oldPassword, newPassword); try { return ctx.extendedOperation(request); } catch (javax.naming.AuthenticationException e) { throw new BadCredentialsException( "Authentication for password change failed."); } }); }
private void changePasswordUsingAttributeModification (DistinguishedName userDn, String oldPassword, String newPassword) { final ModificationItem[] passwordChange = new ModificationItem[] { new ModificationItem( DirContext.REPLACE_ATTRIBUTE, new BasicAttribute(passwordAttributeName, newPassword)) }; if (oldPassword == null) { template.modifyAttributes(userDn, passwordChange); return; } template.executeReadWrite(dirCtx -> { LdapContext ctx = (LdapContext) dirCtx; ctx.removeFromEnvironment("com.sun.jndi.ldap.connect.pool"); ctx.addToEnvironment(Context.SECURITY_PRINCIPAL, LdapUtils.getFullDn(userDn, ctx).toString()); ctx.addToEnvironment(Context.SECURITY_CREDENTIALS, oldPassword); // TODO: reconnect doesn't appear to actually change the credentials try { ctx.reconnect(null); } catch (javax.naming.AuthenticationException e) { throw new BadCredentialsException( "Authentication for password change failed."); } ctx.modifyAttributes(userDn, passwordChange); return null; }); }
/** * {@inheritDoc} */ @Override public void bind(final String dn, final Object obj, final Attributes attributes) { executeReadWrite(new ContextExecutor<Object>() { public Object executeWithContext(DirContext ctx) throws javax.naming.NamingException { ctx.bind(dn, obj, attributes); return null; } }); }
private void doUnbindRecursively(final String dn) { executeReadWrite(new ContextExecutor<Object>() { public Object executeWithContext(DirContext ctx) throws javax.naming.NamingException { deleteRecursively(ctx, LdapUtils.newLdapName(dn)); return null; } }); }
/** * {@inheritDoc} */ @Override public void modifyAttributes(final String dn, final ModificationItem[] mods) { executeReadWrite(new ContextExecutor() { public Object executeWithContext(DirContext ctx) throws javax.naming.NamingException { ctx.modifyAttributes(dn, mods); return null; } }); }
private void doUnbind(final Name dn) { executeReadWrite(new ContextExecutor<Object>() { public Object executeWithContext(DirContext ctx) throws javax.naming.NamingException { ctx.unbind(dn); return null; } }); }
/** * {@inheritDoc} */ @Override public void rebind(final String dn, final Object obj, final Attributes attributes) { executeReadWrite(new ContextExecutor() { public Object executeWithContext(DirContext ctx) throws javax.naming.NamingException { ctx.rebind(dn, obj, attributes); return null; } }); }
private void doUnbind(final String dn) { executeReadWrite(new ContextExecutor<Object>() { public Object executeWithContext(DirContext ctx) throws javax.naming.NamingException { ctx.unbind(dn); return null; } }); }
private void doUnbindRecursively(final Name dn) { executeReadWrite(new ContextExecutor<Object>() { public Object executeWithContext(DirContext ctx) { deleteRecursively(ctx, LdapUtils.newLdapName(dn)); return null; } }); }
private void doUnbindRecursively(final Name dn) { executeReadWrite(new ContextExecutor<Object>() { public Object executeWithContext(DirContext ctx) { deleteRecursively(ctx, LdapUtils.newLdapName(dn)); return null; } }); }
private void doUnbindRecursively(final String dn) { executeReadWrite(new ContextExecutor<Object>() { public Object executeWithContext(DirContext ctx) throws javax.naming.NamingException { deleteRecursively(ctx, LdapUtils.newLdapName(dn)); return null; } }); }
/** * {@inheritDoc} */ @Override public void rebind(final String dn, final Object obj, final Attributes attributes) { executeReadWrite(new ContextExecutor() { public Object executeWithContext(DirContext ctx) throws javax.naming.NamingException { ctx.rebind(dn, obj, attributes); return null; } }); }
private void doUnbind(final Name dn) { executeReadWrite(new ContextExecutor<Object>() { public Object executeWithContext(DirContext ctx) throws javax.naming.NamingException { ctx.unbind(dn); return null; } }); }
/** * {@inheritDoc} */ @Override public void modifyAttributes(final Name dn, final ModificationItem[] mods) { executeReadWrite(new ContextExecutor() { public Object executeWithContext(DirContext ctx) throws javax.naming.NamingException { ctx.modifyAttributes(dn, mods); return null; } }); }
/** * {@inheritDoc} */ @Override public void modifyAttributes(final Name dn, final ModificationItem[] mods) { executeReadWrite(new ContextExecutor() { public Object executeWithContext(DirContext ctx) throws javax.naming.NamingException { ctx.modifyAttributes(dn, mods); return null; } }); }
/** * {@inheritDoc} */ @Override public void bind(final Name dn, final Object obj, final Attributes attributes) { executeReadWrite(new ContextExecutor<Object>() { public Object executeWithContext(DirContext ctx) throws javax.naming.NamingException { ctx.bind(dn, obj, attributes); return null; } }); }
private void doUnbindRecursively(final String dn) { executeReadWrite(new ContextExecutor<Object>() { public Object executeWithContext(DirContext ctx) throws javax.naming.NamingException { deleteRecursively(ctx, LdapUtils.newLdapName(dn)); return null; } }); }
/** * {@inheritDoc} */ @Override public void rebind(final String dn, final Object obj, final Attributes attributes) { executeReadWrite(new ContextExecutor() { public Object executeWithContext(DirContext ctx) throws javax.naming.NamingException { ctx.rebind(dn, obj, attributes); return null; } }); }
/** * {@inheritDoc} */ @Override public void rebind(final Name dn, final Object obj, final Attributes attributes) { executeReadWrite(new ContextExecutor() { public Object executeWithContext(DirContext ctx) throws javax.naming.NamingException { ctx.rebind(dn, obj, attributes); return null; } }); }