io.vertx.ext.auth.jdbc

## Interface JDBCAuth

- All Superinterfaces:
    AuthProvider

      public interface JDBCAuth
      extends AuthProvider

  Factory interface for creating `AuthProvider` instances that use the Vert.x JDBC client. By default the hashing strategy is SHA-512. If you're already running in production this is backwards compatible, however for new deployments or security upgrades it is recommended to use the PBKDF2 strategy as it is the current OWASP recommendation for password storage.
  Author:
    Tim Fox

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static String` | `DEFAULT_AUTHENTICATE_QUERY` The default query to be used for authentication
    `static String` | `DEFAULT_PERMISSIONS_QUERY` The default query to retrieve all permissions for the role
    `static String` | `DEFAULT_ROLE_PREFIX` The default role prefix
    `static String` | `DEFAULT_ROLES_QUERY` The default query to retrieve all roles for the user

  - ### Method Summary

    All Methods Static Methods Instance Methods Abstract Methods Default Methods
    Modifier and Type | Method and Description
    --- | ---
    `default String` | `computeHash(String password, String salt)` Compute the hashed password given the unhashed password and the salt without nonce The implementation relays to the JDBCHashStrategy provided.
    `String` | `computeHash(String password, String salt, int version)` Compute the hashed password given the unhashed password and the salt The implementation relays to the JDBCHashStrategy provided.
    `static JDBCAuth` | `create(Vertx vertx, JDBCClient client)` Create a JDBC auth provider implementation
    `String` | `generateSalt()` Compute a salt string.
    `JDBCAuth` | `setAuthenticationQuery(String authenticationQuery)` Set the authentication query to use.
    `JDBCAuth` | `setHashStrategy(JDBCHashStrategy strategy)` Set the hash strategy to use.
    `JDBCAuth` | `setNonces(JsonArray nonces)` Provide a application configuration level on hash nonce's as a ordered list of nonces where each position corresponds to a version.
    `JDBCAuth` | `setPermissionsQuery(String permissionsQuery)` Set the permissions query to use.
    `JDBCAuth` | `setRolePrefix(String rolePrefix)` Set the role prefix to distinguish from permissions when checking for isPermitted requests.
    `JDBCAuth` | `setRolesQuery(String rolesQuery)` Set the roles query to use.

    - ### Methods inherited from interface io.vertx.ext.auth.AuthProvider

      `authenticate`

- - ### Field Detail

    - #### DEFAULT_AUTHENTICATE_QUERY

          static final String DEFAULT_AUTHENTICATE_QUERY

      The default query to be used for authentication
      See Also:
        Constant Field Values

    - #### DEFAULT_ROLES_QUERY

          static final String DEFAULT_ROLES_QUERY

      The default query to retrieve all roles for the user
      See Also:
        Constant Field Values

    - #### DEFAULT_PERMISSIONS_QUERY

          static final String DEFAULT_PERMISSIONS_QUERY

      The default query to retrieve all permissions for the role
      See Also:
        Constant Field Values

    - #### DEFAULT_ROLE_PREFIX

          static final String DEFAULT_ROLE_PREFIX

      The default role prefix
      See Also:
        Constant Field Values

  - ### Method Detail

    - #### create

          static JDBCAuth create(Vertx vertx,
                                 JDBCClient client)

      Create a JDBC auth provider implementation
      Parameters:
        `client` - the JDBC client instance
      Returns:
        the auth provider

    - #### setAuthenticationQuery

          JDBCAuth setAuthenticationQuery(String authenticationQuery)

      Set the authentication query to use. Use this if you want to override the default authentication query.
      Parameters:
        `authenticationQuery` - the authentication query
      Returns:
        a reference to this for fluency

    - #### setRolesQuery

          JDBCAuth setRolesQuery(String rolesQuery)

      Set the roles query to use. Use this if you want to override the default roles query.
      Parameters:
        `rolesQuery` - the roles query
      Returns:
        a reference to this for fluency

    - #### setPermissionsQuery

          JDBCAuth setPermissionsQuery(String permissionsQuery)

      Set the permissions query to use. Use this if you want to override the default permissions query.
      Parameters:
        `permissionsQuery` - the permissions query
      Returns:
        a reference to this for fluency

    - #### setRolePrefix

          JDBCAuth setRolePrefix(String rolePrefix)

      Set the role prefix to distinguish from permissions when checking for isPermitted requests.
      Parameters:
        `rolePrefix` - a Prefix e.g.: "role:"
      Returns:
        a reference to this for fluency

    - #### setHashStrategy

          JDBCAuth setHashStrategy(JDBCHashStrategy strategy)

      Set the hash strategy to use. Use this if you want override the default hash strategy
      Parameters:
        `strategy` - the strategy
      Returns:
        a reference to this for fluency

    - #### computeHash

          default String computeHash(String password,
                                     String salt)

      Compute the hashed password given the unhashed password and the salt without nonce The implementation relays to the JDBCHashStrategy provided.
      Parameters:
        `password` - the unhashed password
        `salt` - the salt
      Returns:
        the hashed password

    - #### computeHash

          String computeHash(String password,
                             String salt,
                             int version)

      Compute the hashed password given the unhashed password and the salt The implementation relays to the JDBCHashStrategy provided.
      Parameters:
        `password` - the unhashed password
        `salt` - the salt
        `version` - the nonce version to use
      Returns:
        the hashed password

    - #### generateSalt

          String generateSalt()

      Compute a salt string. The implementation relays to the JDBCHashStrategy provided.
      Returns:
        a non null salt value

    - #### setNonces

          JDBCAuth setNonces(JsonArray nonces)

      Provide a application configuration level on hash nonce's as a ordered list of nonces where each position corresponds to a version. The nonces are supposed not to be stored in the underlying jdbc storage but to be provided as a application configuration. The idea is to add one extra variable to the hash function in order to make breaking the passwords using rainbow tables or precomputed hashes harder. Leaving the attacker only with the brute force approach. The implementation relays to the JDBCHashStrategy provided.
      Parameters:
        `nonces` - a List of non null Strings.
      Returns:
        a reference to this for fluency

Copyright © 2022 Eclipse. All rights reserved.