Package org.jivesoftware.openfire.auth
Class HybridAuthProvider
- java.lang.Object
-
- org.jivesoftware.openfire.auth.HybridAuthProvider
-
- All Implemented Interfaces:
AuthProvider
public class HybridAuthProvider extends Object implements AuthProvider
The hybrid auth provider allows up to three AuthProvider implementations to be strung together to do chained authentication checking. The algorithm is as follows:- Attempt authentication using the primary provider. If that fails:
- If the secondary provider is defined, attempt authentication (otherwise return). If that fails:
- If the tertiary provider is defined, attempt authentication.
MappedAuthProvider. The Hybrid variant of the provider iterates over providers, operating on the first applicable instance. The Mapped variant, however, maps each user to exactly one provider. To enable this provider, set theprovider.auth.classNamesystem property toorg.jivesoftware.openfire.auth.HybridAuthProvider. The primary, secondary, and tertiary providers are configured be setting system properties similar to the following:hybridAuthProvider.primaryProvider = org.jivesoftware.openfire.auth.DefaultAuthProviderhybridAuthProvider.secondaryProvider = org.jivesoftware.openfire.auth.NativeAuthProvider
The full list of properties:
hybridAuthProvider.primaryProvider.className(required) -- the class name of the auth provider.hybridAuthProvider.primaryProvider.overrideList-- a comma-delimitted list of usernames for which authentication will only be tried with this provider.hybridAuthProvider.secondaryProvider.className-- the class name of the auth provider.hybridAuthProvider.secondaryProvider.overrideList-- a comma-delimitted list of usernames for which authentication will only be tried with this provider.hybridAuthProvider.tertiaryProvider.className-- the class name of the auth provider.hybridAuthProvider.tertiaryProvider.overrideList-- a comma-delimitted list of usernames for which authentication will only be tried with this provider.
- Author:
- Matt Tucker
-
-
Constructor Summary
Constructors Constructor Description HybridAuthProvider()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidauthenticate(String username, String password)Returns if the username and password are valid; otherwise this method throws an UnauthorizedException.intgetIterations(String username)StringgetPassword(String username)Returns the user's password.StringgetSalt(String username)StringgetServerKey(String username)StringgetStoredKey(String username)booleanisScramSupported()voidsetPassword(String username, String password)Sets the users's password.booleansupportsPasswordRetrieval()Returns true if this UserProvider is able to retrieve user passwords from the backend user store.
-
-
-
Method Detail
-
authenticate
public void authenticate(String username, String password) throws UnauthorizedException, ConnectionException, InternalUnauthenticatedException
Description copied from interface:AuthProviderReturns if the username and password are valid; otherwise this method throws an UnauthorizedException.- Specified by:
authenticatein interfaceAuthProvider- Parameters:
username- the username or full JID.password- the password- Throws:
UnauthorizedException- if the username and password do not match any existing user.ConnectionException- it there is a problem connecting to user and group systemInternalUnauthenticatedException- if there is a problem authentication Openfire itself into the user and group system
-
getPassword
public String getPassword(String username) throws UserNotFoundException, UnsupportedOperationException
Description copied from interface:AuthProviderReturns the user's password. This method should throw an UnsupportedOperationException if this operation is not supported by the backend user store.- Specified by:
getPasswordin interfaceAuthProvider- Parameters:
username- the username of the user.- Returns:
- the user's password.
- Throws:
UserNotFoundException- if the given user's password could not be loaded.UnsupportedOperationException- if the provider does not support the operation (this is an optional operation).
-
setPassword
public void setPassword(String username, String password) throws UserNotFoundException, UnsupportedOperationException
Description copied from interface:AuthProviderSets the users's password. This method should throw an UnsupportedOperationException if this operation is not supported by the backend user store.- Specified by:
setPasswordin interfaceAuthProvider- Parameters:
username- the username of the user.password- the new plaintext password for the user.- Throws:
UserNotFoundException- if the given user could not be loaded.UnsupportedOperationException- if the provider does not support the operation (this is an optional operation).
-
supportsPasswordRetrieval
public boolean supportsPasswordRetrieval()
Description copied from interface:AuthProviderReturns true if this UserProvider is able to retrieve user passwords from the backend user store. If this operation is not supported thenAuthProvider.getPassword(String)will throw anUnsupportedOperationExceptionif invoked.- Specified by:
supportsPasswordRetrievalin interfaceAuthProvider- Returns:
- true if this UserProvider is able to retrieve user passwords from the backend user store.
-
isScramSupported
public boolean isScramSupported()
- Specified by:
isScramSupportedin interfaceAuthProvider
-
getSalt
public String getSalt(String username) throws UnsupportedOperationException, UserNotFoundException
- Specified by:
getSaltin interfaceAuthProvider- Throws:
UnsupportedOperationExceptionUserNotFoundException
-
getIterations
public int getIterations(String username) throws UnsupportedOperationException, UserNotFoundException
- Specified by:
getIterationsin interfaceAuthProvider- Throws:
UnsupportedOperationExceptionUserNotFoundException
-
getServerKey
public String getServerKey(String username) throws UnsupportedOperationException, UserNotFoundException
- Specified by:
getServerKeyin interfaceAuthProvider- Throws:
UnsupportedOperationExceptionUserNotFoundException
-
getStoredKey
public String getStoredKey(String username) throws UnsupportedOperationException, UserNotFoundException
- Specified by:
getStoredKeyin interfaceAuthProvider- Throws:
UnsupportedOperationExceptionUserNotFoundException
-
-