mirror of
https://github.com/spring-projects/spring-security.git
synced 2025-07-12 13:23:29 +00:00
Moved to net.sf.acegisecurity.providers.encoding.
This commit is contained in:
parent
6815e693a7
commit
ae16d96121
@ -1,44 +0,0 @@
|
|||||||
/* Copyright 2004 Acegi Technology Pty Limited
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
package net.sf.acegisecurity.providers.dao;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* <p>
|
|
||||||
* Convenience base for Digest password encoders
|
|
||||||
* </p>
|
|
||||||
*
|
|
||||||
* @author colin sampaleanu
|
|
||||||
* @version $Id$
|
|
||||||
*/
|
|
||||||
public abstract class BaseDigestPasswordEncoder implements PasswordEncoder {
|
|
||||||
|
|
||||||
//~ Instance fields ========================================================
|
|
||||||
private boolean encodeHashAsBase64 = false;
|
|
||||||
|
|
||||||
//~ Methods ================================================================
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The encoded password is normally returned as Hex (32 char) version of the
|
|
||||||
* hash bytes. Setting this property to true will cause the encoded pass to
|
|
||||||
* be returned as Base64 text, which will consume 24 characters.
|
|
||||||
*/
|
|
||||||
public void setEncodeHashAsBase64(boolean encodeHashAsBase64) {
|
|
||||||
this.encodeHashAsBase64 = encodeHashAsBase64;
|
|
||||||
}
|
|
||||||
public boolean getEncodeHashAsBase64() {
|
|
||||||
return encodeHashAsBase64;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,63 +0,0 @@
|
|||||||
/* Copyright 2004 Acegi Technology Pty Limited
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package net.sf.acegisecurity.providers.dao;
|
|
||||||
|
|
||||||
import org.apache.commons.codec.binary.Base64;
|
|
||||||
import org.apache.commons.codec.digest.DigestUtils;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* <p>
|
|
||||||
* MD5 implementation of PasswordEncoder.
|
|
||||||
* </p>
|
|
||||||
*
|
|
||||||
* <p>
|
|
||||||
* A null password is encoded to the same value as an empty ("") password.
|
|
||||||
* </p>
|
|
||||||
*
|
|
||||||
* @author colin sampaleanu
|
|
||||||
* @version $Id$
|
|
||||||
*/
|
|
||||||
public class MD5PasswordEncoder extends BaseDigestPasswordEncoder implements PasswordEncoder {
|
|
||||||
//~ Methods ================================================================
|
|
||||||
|
|
||||||
/* (non-Javadoc)
|
|
||||||
* @see net.sf.acegisecurity.providers.dao.PasswordEncoder#isPasswordValid(java.lang.String, java.lang.String, java.lang.Object)
|
|
||||||
*/
|
|
||||||
public boolean isPasswordValid(String encPass, String rawPass, Object saltSource) {
|
|
||||||
|
|
||||||
String pass1 = "" + encPass;
|
|
||||||
String pass2 = encodeInternal("" + rawPass);
|
|
||||||
|
|
||||||
return pass1.equals(pass2);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* (non-Javadoc)
|
|
||||||
* @see net.sf.acegisecurity.providers.dao.PasswordEncoder#encodePassword(java.lang.String, java.lang.Object)
|
|
||||||
*/
|
|
||||||
public String encodePassword(String rawPass, Object saltSource) {
|
|
||||||
return encodeInternal("" + rawPass);
|
|
||||||
}
|
|
||||||
|
|
||||||
private String encodeInternal(String input) {
|
|
||||||
|
|
||||||
if (!getEncodeHashAsBase64())
|
|
||||||
return DigestUtils.md5Hex(input);
|
|
||||||
|
|
||||||
byte[] encoded = Base64.encodeBase64(DigestUtils.md5(input));
|
|
||||||
return new String(encoded);
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,38 +0,0 @@
|
|||||||
/* Copyright 2004 Acegi Technology Pty Limited
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package net.sf.acegisecurity.providers.dao;
|
|
||||||
|
|
||||||
import org.springframework.dao.DataAccessException;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* <p>
|
|
||||||
* Describes authentication operations on a password, so that digest algorithms
|
|
||||||
* can be abstracted
|
|
||||||
* </p>
|
|
||||||
*
|
|
||||||
* @author colin sampaleanu
|
|
||||||
* @version $Id$
|
|
||||||
*/
|
|
||||||
public interface PasswordEncoder {
|
|
||||||
//~ Methods ================================================================
|
|
||||||
|
|
||||||
public boolean isPasswordValid(String encPass, String rawPass,
|
|
||||||
Object saltSource)
|
|
||||||
throws DataAccessException;
|
|
||||||
|
|
||||||
public String encodePassword(String rawPass, Object saltSource) throws DataAccessException;
|
|
||||||
}
|
|
@ -1,69 +0,0 @@
|
|||||||
/* Copyright 2004 Acegi Technology Pty Limited
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package net.sf.acegisecurity.providers.dao;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* <p>
|
|
||||||
* Plaintext implementation of PasswordEncoder.
|
|
||||||
* </p>
|
|
||||||
*
|
|
||||||
* @author colin sampaleanu
|
|
||||||
* @version $Id$
|
|
||||||
*/
|
|
||||||
public class PlaintextPasswordEncoder implements PasswordEncoder {
|
|
||||||
|
|
||||||
//~ Instance fields ========================================================
|
|
||||||
private boolean ignorePasswordCase = false;
|
|
||||||
|
|
||||||
//~ Methods ================================================================
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Indicates whether the password comparison is case sensitive. Defaults to
|
|
||||||
* <code>false</code>, meaning an exact case match is required.
|
|
||||||
*
|
|
||||||
* @param ignorePasswordCase set to <code>true</code> for less stringent
|
|
||||||
* comparison
|
|
||||||
*/
|
|
||||||
public void setIgnorePasswordCase(boolean ignorePasswordCase) {
|
|
||||||
this.ignorePasswordCase = ignorePasswordCase;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isIgnorePasswordCase() {
|
|
||||||
return ignorePasswordCase;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* (non-Javadoc)
|
|
||||||
* @see net.sf.acegisecurity.providers.dao.PasswordEncoder#isPasswordValid(java.lang.String, java.lang.String, java.lang.Object)
|
|
||||||
*/
|
|
||||||
public boolean isPasswordValid(String encPass, String rawPass, Object saltSource) {
|
|
||||||
|
|
||||||
String pass1 = "" + encPass;
|
|
||||||
String pass2 = "" + rawPass;
|
|
||||||
|
|
||||||
if (!ignorePasswordCase) {
|
|
||||||
return pass1.equals(pass2);
|
|
||||||
} else {
|
|
||||||
return pass1.equalsIgnoreCase(pass2);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* (non-Javadoc)
|
|
||||||
* @see net.sf.acegisecurity.providers.dao.PasswordEncoder#encodePassword(java.lang.String, java.lang.Object)
|
|
||||||
*/
|
|
||||||
public String encodePassword(String rawPass, Object saltSource) {
|
|
||||||
return rawPass;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,61 +0,0 @@
|
|||||||
/* Copyright 2004 Acegi Technology Pty Limited
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package net.sf.acegisecurity.providers.dao;
|
|
||||||
|
|
||||||
import org.apache.commons.codec.binary.Base64;
|
|
||||||
import org.apache.commons.codec.digest.DigestUtils;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* <p>
|
|
||||||
* SHA implementation of PasswordEncoder.
|
|
||||||
* </p>
|
|
||||||
*
|
|
||||||
* <p>
|
|
||||||
* A null password is encoded to the same value as an empty ("") password.
|
|
||||||
* </p>
|
|
||||||
*
|
|
||||||
* @author colin sampaleanu
|
|
||||||
* @version $Id$
|
|
||||||
*/
|
|
||||||
public class SHAPasswordEncoder extends BaseDigestPasswordEncoder implements PasswordEncoder {
|
|
||||||
|
|
||||||
/* (non-Javadoc)
|
|
||||||
* @see net.sf.acegisecurity.providers.dao.PasswordEncoder#isPasswordValid(java.lang.String, java.lang.String, java.lang.Object)
|
|
||||||
*/
|
|
||||||
public boolean isPasswordValid(String encPass, String rawPass, Object saltSource) {
|
|
||||||
|
|
||||||
String pass1 = "" + encPass;
|
|
||||||
String pass2 = encodeInternal("" + rawPass);
|
|
||||||
|
|
||||||
return pass1.equals(pass2);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* (non-Javadoc)
|
|
||||||
* @see net.sf.acegisecurity.providers.dao.PasswordEncoder#encodePassword(java.lang.String, java.lang.Object)
|
|
||||||
*/
|
|
||||||
public String encodePassword(String rawPass, Object saltSource) {
|
|
||||||
return encodeInternal("" + rawPass);
|
|
||||||
}
|
|
||||||
|
|
||||||
private String encodeInternal(String input) {
|
|
||||||
|
|
||||||
if (!getEncodeHashAsBase64())
|
|
||||||
return DigestUtils.shaHex(input);
|
|
||||||
|
|
||||||
byte[] encoded = Base64.encodeBase64(DigestUtils.sha(input));
|
|
||||||
return new String(encoded);
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
x
Reference in New Issue
Block a user