Example usage for org.springframework.security.crypto.codec Utf8 encode

List of usage examples for org.springframework.security.crypto.codec Utf8 encode

Introduction

In this page you can find the example usage for org.springframework.security.crypto.codec Utf8 encode.

Prototype

public static byte[] encode(CharSequence string) 

Source Link

Document

Get the bytes of the String in UTF-8 encoded form.

Usage

From source file:org.cloudfoundry.identity.uaa.ldap.PasswordComparisonAuthenticator.java

@Override
public DirContextOperations authenticate(Authentication authentication) {
    DirContextOperations user = null;// w  w  w . j  a v a2s  . c o  m
    String username = authentication.getName();
    String password = (String) authentication.getCredentials();

    SpringSecurityLdapTemplate ldapTemplate = new SpringSecurityLdapTemplate(getContextSource());

    for (String userDn : getUserDns(username)) {
        try {
            user = ldapTemplate.retrieveEntry(userDn, getUserAttributes());
        } catch (NameNotFoundException ignore) {
        }
        if (user != null) {
            break;
        }
    }

    if (user == null && getUserSearch() != null) {
        user = getUserSearch().searchForUser(username);
    }

    if (user == null) {
        throw new UsernameNotFoundException("User not found: " + username, username);
    }

    if (logger.isDebugEnabled()) {
        logger.debug("Performing LDAP compare of password attribute '" + passwordAttributeName + "' for user '"
                + user.getDn() + "'");
    }

    if (isLocalCompare()) {
        localCompareAuthenticate(user, password);
    } else {
        String encodedPassword = passwordEncoder.encodePassword(password, null);
        byte[] passwordBytes = Utf8.encode(encodedPassword);
        searchAuthenticate(user, passwordBytes, ldapTemplate);
    }

    return user;

}

From source file:org.cloudfoundry.identity.uaa.ldap.PasswordComparisonAuthenticator.java

public DirContextOperations localCompareAuthenticate(DirContextOperations user, String password) {
    boolean match = false;
    try {/* ww w  . j a v  a2  s  . c  om*/
        Attributes attributes = user.getAttributes();
        Attribute attr = attributes.get(getPasswordAttributeName());
        if (attr.size() == 0) {
            throw new AuthenticationCredentialsNotFoundException(
                    "Missing " + getPasswordAttributeName() + " attribute.");
        }
        for (int i = 0; (attr != null) && (!match) && (i < attr.size()); i++) {
            Object valObject = attr.get(i);
            if (valObject != null && valObject instanceof byte[]) {
                if (passwordEncoder instanceof DynamicPasswordComparator) {
                    byte[] received = password.getBytes();
                    byte[] stored = (byte[]) valObject;
                    match = ((DynamicPasswordComparator) passwordEncoder).comparePasswords(received, stored);
                } else {
                    String encodedPassword = passwordEncoder.encodePassword(password, null);
                    byte[] passwordBytes = Utf8.encode(encodedPassword);
                    match = Arrays.equals(passwordBytes, (byte[]) valObject);
                }
            }
        }
    } catch (NamingException e) {
        throw new BadCredentialsException("Bad credentials", e);
    }
    if (!match)
        throw new BadCredentialsException("Bad credentials");
    return user;
}

From source file:org.cloudfoundry.identity.uaa.provider.ldap.PasswordComparisonAuthenticator.java

@Override
public DirContextOperations authenticate(Authentication authentication) {
    DirContextOperations user = null;/*from  www  . ja  va  2s .c  om*/
    String username = authentication.getName();
    String password = (String) authentication.getCredentials();

    SpringSecurityLdapTemplate ldapTemplate = new SpringSecurityLdapTemplate(getContextSource());

    for (String userDn : getUserDns(username)) {
        try {
            user = ldapTemplate.retrieveEntry(userDn, getUserAttributes());
        } catch (NameNotFoundException ignore) {
        }
        if (user != null) {
            break;
        }
    }

    if (user == null && getUserSearch() != null) {
        user = getUserSearch().searchForUser(username);
    }

    if (user == null) {
        throw new UsernameNotFoundException("User not found: " + username);
    }

    if (logger.isDebugEnabled()) {
        logger.debug("Performing LDAP compare of password attribute '" + passwordAttributeName + "' for user '"
                + user.getDn() + "'");
    }

    if (isLocalCompare()) {
        localCompareAuthenticate(user, password);
    } else {
        String encodedPassword = passwordEncoder.encodePassword(password, null);
        byte[] passwordBytes = Utf8.encode(encodedPassword);
        searchAuthenticate(user, passwordBytes, ldapTemplate);
    }

    return user;

}

From source file:org.springframework.security.crypto.scrypt.SCryptPasswordEncoder.java

private boolean decodeAndCheckMatches(CharSequence rawPassword, String encodedPassword) {
    String[] parts = encodedPassword.split("\\$");

    if (parts.length != 4) {
        return false;
    }/*ww  w. ja v a  2 s  .  c o  m*/

    long params = Long.parseLong(parts[1], 16);
    byte[] salt = decodePart(parts[2]);
    byte[] derived = decodePart(parts[3]);

    int cpuCost = (int) Math.pow(2, params >> 16 & 0xffff);
    int memoryCost = (int) params >> 8 & 0xff;
    int parallelization = (int) params & 0xff;

    byte[] generated = SCrypt.generate(Utf8.encode(rawPassword), salt, cpuCost, memoryCost, parallelization,
            keyLength);

    if (derived.length != generated.length) {
        return false;
    }

    int result = 0;
    for (int i = 0; i < derived.length; i++) {
        result |= derived[i] ^ generated[i];
    }
    return result == 0;
}

From source file:org.springframework.security.crypto.scrypt.SCryptPasswordEncoder.java

private String digest(CharSequence rawPassword, byte[] salt) {
    byte[] derived = SCrypt.generate(Utf8.encode(rawPassword), salt, cpuCost, memoryCost, parallelization,
            keyLength);/* w ww.  j  a va  2 s  .co  m*/

    String params = Long
            .toString(((int) (Math.log(cpuCost) / Math.log(2)) << 16L) | memoryCost << 8 | parallelization, 16);

    StringBuilder sb = new StringBuilder((salt.length + derived.length) * 2);
    sb.append("$").append(params).append('$');
    sb.append(encodePart(salt)).append('$');
    sb.append(encodePart(derived));

    return sb.toString();
}

From source file:org.springframework.security.crypto.scrypt.SCryptPasswordEncoder.java

private byte[] decodePart(String part) {
    return Base64.getDecoder().decode(Utf8.encode(part));
}

From source file:org.springframework.security.ldap.authentication.PasswordComparisonAuthenticator.java

private boolean isLdapPasswordCompare(DirContextOperations user, SpringSecurityLdapTemplate ldapTemplate,
        String password) {// w  ww.  jav  a  2 s .c om
    String encodedPassword = passwordEncoder.encode(password);
    byte[] passwordBytes = Utf8.encode(encodedPassword);
    return ldapTemplate.compare(user.getDn().toString(), passwordAttributeName, passwordBytes);
}