Wildfire 3.2.4 Javadoc

org.jivesoftware.wildfire.auth
Class JDBCAuthProvider

java.lang.Object
  extended by org.jivesoftware.wildfire.auth.JDBCAuthProvider
All Implemented Interfaces:
AuthProvider

public class JDBCAuthProvider
extends Object
implements AuthProvider

The JDBC auth provider allows you to authenticate users against any database that you can connect to with JDBC. It can be used along with the hybrid auth provider, so that you can also have XMPP-only users that won't pollute your external data.

To enable this provider, set the following in the XML configuration file:

 <provider>
     <auth>
         <className>org.jivesoftware.wildfire.auth.JDBCAuthProvider</className>
     </auth>
 </provider>
 
You'll also need to set your JDBC driver, connection string, and SQL statements:
 <jdbcProvider>
     <driver>com.mysql.jdbc.Driver</driver>
     <connectionString>jdbc:mysql://localhost/dbname?user=username&password=secret</connectionString>
 </jdbcProvider>

 <jdbcAuthProvider>
      <passwordSQL>SELECT password FROM user_account WHERE username=?</passwordSQL>
      <passwordType>plain</passwordType>
 </jdbcAuthProvider>
The passwordType setting tells Wildfire how the password is stored. Setting the value is optional (when not set, it defaults to "plain"). The valid values are:

Author:
David Snopek

Nested Class Summary
static class JDBCAuthProvider.PasswordType
          Indicates how the password is stored.
 
Constructor Summary
JDBCAuthProvider()
          Constructs a new JDBC authentication provider.
 
Method Summary
 void authenticate(String username, String password)
          Returns if the username and password are valid; otherwise this method throws an UnauthorizedException.
 void authenticate(String username, String token, String digest)
          Returns if the username, token, and digest are valid; otherwise this method throws an UnauthorizedException.
 String getPassword(String username)
          Returns the user's password.
 boolean isDigestSupported()
          Returns true if this AuthProvider supports digest authentication according to JEP-0078.
 boolean isPlainSupported()
          Returns true if this AuthProvider supports authentication using plain-text passwords according to JEP--0078.
 void setPassword(String username, String password)
          Sets the users's password.
 boolean supportsPasswordRetrieval()
          Returns true if this UserProvider is able to retrieve user passwords from the backend user store.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

JDBCAuthProvider

public JDBCAuthProvider()
Constructs a new JDBC authentication provider.

Method Detail

authenticate

public void authenticate(String username,
                         String password)
                  throws UnauthorizedException
Description copied from interface: AuthProvider
Returns if the username and password are valid; otherwise this method throws an UnauthorizedException.

If AuthProvider.isPlainSupported() returns false, this method should throw an UnsupportedOperationException.

Specified by:
authenticate in interface AuthProvider
Parameters:
username - the username.
password - the passwordl
Throws:
UnauthorizedException - if the username and password do not match any existing user.

authenticate

public void authenticate(String username,
                         String token,
                         String digest)
                  throws UnauthorizedException
Description copied from interface: AuthProvider
Returns if the username, token, and digest are valid; otherwise this method throws an UnauthorizedException.

If AuthProvider.isDigestSupported() returns false, this method should throw an UnsupportedOperationException.

Specified by:
authenticate in interface AuthProvider
Parameters:
username - the username.
token - the token that was used with plain-text password to generate the digest.
digest - the digest generated from plain-text password and unique token.
Throws:
UnauthorizedException - if the username and password do not match any existing user.

isPlainSupported

public boolean isPlainSupported()
Description copied from interface: AuthProvider
Returns true if this AuthProvider supports authentication using plain-text passwords according to JEP--0078. Plain text authentication is not secure and should generally only be used for a TLS/SSL connection.

Specified by:
isPlainSupported in interface AuthProvider
Returns:
true if plain text password authentication is supported by this AuthProvider.

isDigestSupported

public boolean isDigestSupported()
Description copied from interface: AuthProvider
Returns true if this AuthProvider supports digest authentication according to JEP-0078.

Specified by:
isDigestSupported in interface AuthProvider
Returns:
true if digest authentication is supported by this AuthProvider.

getPassword

public String getPassword(String username)
                   throws UserNotFoundException,
                          UnsupportedOperationException
Description copied from interface: AuthProvider
Returns the user's password. This method should throw an UnsupportedOperationException if this operation is not supported by the backend user store.

Specified by:
getPassword in interface AuthProvider
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: AuthProvider
Sets the users's password. This method should throw an UnsupportedOperationException if this operation is not supported by the backend user store.

Specified by:
setPassword in interface AuthProvider
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: AuthProvider
Returns true if this UserProvider is able to retrieve user passwords from the backend user store. If this operation is not supported then AuthProvider.getPassword(String) will throw an UnsupportedOperationException if invoked.

Specified by:
supportsPasswordRetrieval in interface AuthProvider
Returns:
true if this UserProvider is able to retrieve user passwords from the backend user store.

Wildfire 3.2.4 Javadoc

Copyright © 2003-2007 Jive Software.