Class CompositePasswordEncoder
- java.lang.Object
-
- org.alfresco.repo.security.authentication.CompositePasswordEncoder
-
public class CompositePasswordEncoder extends java.lang.ObjectA configurable password encoding that delegates the encoding to a Map of configured encoders.- Author:
- Gethin James
-
-
Constructor Summary
Constructors Constructor Description CompositePasswordEncoder()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected java.lang.Stringencode(java.lang.String encoderKey, java.lang.String rawPassword, java.lang.Object salt)Encode a password using the specified encoderKeyjava.lang.StringencodePassword(java.lang.String rawPassword, java.lang.Object salt, java.util.List<java.lang.String> encodingChain)Encode a passwordjava.lang.StringencodePreferred(java.lang.String rawPassword, java.lang.Object salt)Encodes a password in the preferred encoding.java.lang.StringgetPreferredEncoding()voidinit()Basic init method for checking mandatory propertiesbooleanisSafeToEncodeChain(java.util.List<java.lang.String> encodingChain)Determines if its safe to encode the encoding chain.booleanlastEncodingIsPreferred(java.util.List<java.lang.String> hashIndicator)Is the preferred encoding the last encoding to be used.protected booleanmatches(java.lang.String encoderKey, java.lang.String rawPassword, java.lang.String encodedPassword, java.lang.Object salt)Does the password match?booleanmatchesPassword(java.lang.String rawPassword, java.lang.String encodedPassword, java.lang.Object salt, java.util.List<java.lang.String> encodingChain)Does the password match?voidsetEncoders(java.util.Map<java.lang.String,java.lang.Object> encoders)voidsetPreferredEncoding(java.lang.String preferredEncoding)
-
-
-
Field Detail
-
MD4_KEY
public static final java.lang.String MD4_KEY
- See Also:
- Constant Field Values
-
SHA256
public static final java.util.List<java.lang.String> SHA256
-
MD4
public static final java.util.List<java.lang.String> MD4
-
-
Method Detail
-
getPreferredEncoding
public java.lang.String getPreferredEncoding()
-
setPreferredEncoding
public void setPreferredEncoding(java.lang.String preferredEncoding)
-
setEncoders
public void setEncoders(java.util.Map<java.lang.String,java.lang.Object> encoders)
-
lastEncodingIsPreferred
public boolean lastEncodingIsPreferred(java.util.List<java.lang.String> hashIndicator)
Is the preferred encoding the last encoding to be used.- Parameters:
hashIndicator- representing the encoding- Returns:
- true if is correct
-
isSafeToEncodeChain
public boolean isSafeToEncodeChain(java.util.List<java.lang.String> encodingChain)
Determines if its safe to encode the encoding chain. This applies particularly to double-hashing. BCRYPT uses its own internal salt so its NOT safe to use it more than once in an encoding chain (because the result will be different each time.) BCRYPT CAN BE USED successfully as the last element in an encoding chain. Anything that implements springframework PasswordEncoder is considered "unsafe" (because the method takes no salt param).- Parameters:
encodingChain- mandatory encoding chain- Returns:
- true if it is okay to encode this chain.
-
init
public void init()
Basic init method for checking mandatory properties
-
encodePassword
public java.lang.String encodePassword(java.lang.String rawPassword, java.lang.Object salt, java.util.List<java.lang.String> encodingChain)Encode a password- Parameters:
rawPassword- mandatory passwordsalt- optional saltencodingChain- mandatory encoding chain- Returns:
- the encoded password
-
encodePreferred
public java.lang.String encodePreferred(java.lang.String rawPassword, java.lang.Object salt)Encodes a password in the preferred encoding.- Parameters:
rawPassword- mandatory passwordsalt- optional salt- Returns:
- Encoded password
-
encode
protected java.lang.String encode(java.lang.String encoderKey, java.lang.String rawPassword, java.lang.Object salt)Encode a password using the specified encoderKey- Parameters:
encoderKey- the encoder to userawPassword- mandatory passwordsalt- optional salt- Returns:
- the encoded password
-
matchesPassword
public boolean matchesPassword(java.lang.String rawPassword, java.lang.String encodedPassword, java.lang.Object salt, java.util.List<java.lang.String> encodingChain)Does the password match?- Parameters:
rawPassword- mandatory passwordencodedPassword- mandatory hashed versionsalt- optional saltencodingChain- mandatory encoding chain- Returns:
- true if they match
-
matches
protected boolean matches(java.lang.String encoderKey, java.lang.String rawPassword, java.lang.String encodedPassword, java.lang.Object salt)Does the password match?- Parameters:
encoderKey- the encoder to userawPassword- mandatory passwordencodedPassword- mandatory hashed versionsalt- optional salt- Returns:
- true if they match
-
-