# derby.authentication.provider

#### Function

Specifies the authentication provider for Derby user authentication.

Legal values include:

- LDAP

  An external LDAP directory service.

- A complete Java class name

  A user-defined class that provides user authentication.

- BUILTIN

  Derby's simple internal user authentication repository.

  Important: Derby's BUILTIN authentication mechanism is suitable only for development and testing purposes. It is strongly recommended that production systems rely on LDAP or a user-defined class for authentication. It is also strongly recommended that production systems protect network connections with SSL/TLS.

When using an external authentication service provider (LDAP), you must also set:

- derby.authentication.server

When using LDAP, you can set other LDAP-specific properties. See also:

- derby.authentication.ldap.searchAuthDN
- derby.authentication.ldap.searchAuthPW
- derby.authentication.ldap.searchFilter
- derby.authentication.ldap.searchBase

Alternatively, you can write your own class to provide a different external authentication service. This class must implement the public interface org.apache.derby.authentication.UserAuthenticator and throw exceptions of the type java.sql.SQLException where appropriate. Using a user-defined class makes Derby adaptable to various naming and directory services. For example, the class could allow Derby to hook up to an existing user authentication service that uses any of the standard directory and naming service providers to JNDI.

To enable any Derby user authentication, you must set the derby.connection.requireAuthentication property to true.

For more information about user authentication, see the Java DB Developer's Guide.

#### Syntax

    derby.authentication.provider={ LDAP | BUILTIN | classProviderName }

#### Default

BUILTIN

#### Example

    -- system-wide property
    derby.authentication.provider=LDAP
    -- database-wide property
    CALL SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY(
        'derby.authentication.provider',
        'BUILTIN')

#### Dynamic or static

Static. For system-wide properties, you must reboot Derby for the change to take effect. For database-wide properties, you must reboot the database for the change to take effect.

Parent topic: Derby properties
Related reference
derby.authentication.builtin.algorithm
derby.authentication.ldap.searchAuthDN
derby.authentication.ldap.searchAuthPW
derby.authentication.ldap.searchBase
derby.authentication.ldap.searchFilter
derby.authentication.server
derby.connection.requireAuthentication
derby.database.defaultConnectionMode
derby.database.forceDatabaseLock
derby.database.fullAccessUsers
derby.database.noAutoBoot
derby.database.propertiesOnly
derby.database.readOnlyAccessUsers
derby.database.sqlAuthorization
derby.infolog.append
derby.jdbc.xaTransactionTimeout
derby.language.logQueryPlan
derby.language.logStatementText
derby.locks.deadlockTimeout
derby.locks.deadlockTrace
derby.locks.escalationThreshold
derby.locks.monitor
derby.locks.waitTimeout
derby.replication.logBufferSize
derby.replication.maxLogShippingInterval
derby.replication.minLogShippingInterval
derby.replication.verbose
derby.storage.initialPages
derby.storage.minimumRecordSize
derby.storage.pageCacheSize
derby.storage.pageReservedSpace
derby.storage.pageSize
derby.storage.rowLocking
derby.storage.tempDirectory
derby.stream.error.field
derby.stream.error.file
derby.stream.error.method
derby.stream.error.logSeverityLevel
derby.system.bootAll
derby.system.durability
derby.system.home
derby.user.UserName