Class: VertxAuthJdbc::JDBCAuth
- Inherits:
-
VertxAuthCommon::AuthProvider
- Object
- VertxAuthCommon::AuthProvider
- VertxAuthJdbc::JDBCAuth
- Defined in:
- /Users/julien/java/vertx-aggregator/modules/vertx-lang-ruby/vertx-lang-ruby/target/classes/vertx-auth-jdbc/jdbc_auth.rb
Overview
Factory interface for creating VertxAuthCommon::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.
Constant Summary
- @@j_api_type =
Object.new
Class Method Summary (collapse)
- + (Boolean) accept?(obj)
-
+ (::VertxAuthJdbc::JDBCAuth) create(vertx = nil, client = nil)
Create a JDBC auth provider implementation.
-
+ (Object) DEFAULT_AUTHENTICATE_QUERY
The default query to be used for authentication.
-
+ (Object) DEFAULT_PERMISSIONS_QUERY
The default query to retrieve all permissions for the role.
-
+ (Object) DEFAULT_ROLE_PREFIX
The default role prefix.
-
+ (Object) DEFAULT_ROLES_QUERY
The default query to retrieve all roles for the user.
- + (Object) j_api_type
- + (Object) j_class
- + (Object) unwrap(obj)
- + (Object) wrap(obj)
Instance Method Summary (collapse)
-
- (void) authenticate(authInfo = nil) { ... }
Authenticate a user.
-
- (String) compute_hash(password = nil, salt = nil, version = nil)
Compute the hashed password given the unhashed password and the salt.
-
- (String) generate_salt
Compute a salt string.
-
- (self) set_authentication_query(authenticationQuery = nil)
Set the authentication query to use.
-
- (self) set_nonces(nonces = nil)
Provide a application configuration level on hash nonce's as a ordered list of nonces where each position corresponds to a version.
-
- (self) set_permissions_query(permissionsQuery = nil)
Set the permissions query to use.
-
- (self) set_role_prefix(rolePrefix = nil)
Set the role prefix to distinguish from permissions when checking for isPermitted requests.
-
- (self) set_roles_query(rolesQuery = nil)
Set the roles query to use.
Class Method Details
+ (Boolean) accept?(obj)
25 26 27 |
# File '/Users/julien/java/vertx-aggregator/modules/vertx-lang-ruby/vertx-lang-ruby/target/classes/vertx-auth-jdbc/jdbc_auth.rb', line 25 def @@j_api_type.accept?(obj) obj.class == JDBCAuth end |
+ (::VertxAuthJdbc::JDBCAuth) create(vertx = nil, client = nil)
Create a JDBC auth provider implementation
68 69 70 71 72 73 |
# File '/Users/julien/java/vertx-aggregator/modules/vertx-lang-ruby/vertx-lang-ruby/target/classes/vertx-auth-jdbc/jdbc_auth.rb', line 68 def self.create(vertx=nil,client=nil) if vertx.class.method_defined?(:j_del) && client.class.method_defined?(:j_del) && !block_given? return ::Vertx::Util::Utils.safe_create(Java::IoVertxExtAuthJdbc::JDBCAuth.java_method(:create, [Java::IoVertxCore::Vertx.java_class,Java::IoVertxExtJdbc::JDBCClient.java_class]).call(vertx.j_del,client.j_del),::VertxAuthJdbc::JDBCAuth) end raise ArgumentError, "Invalid arguments when calling create(#{vertx},#{client})" end |
+ (Object) DEFAULT_AUTHENTICATE_QUERY
The default query to be used for authentication
159 160 161 |
# File '/Users/julien/java/vertx-aggregator/modules/vertx-lang-ruby/vertx-lang-ruby/target/classes/vertx-auth-jdbc/jdbc_auth.rb', line 159 def self.DEFAULT_AUTHENTICATE_QUERY Java::IoVertxExtAuthJdbc::JDBCAuth.DEFAULT_AUTHENTICATE_QUERY end |
+ (Object) DEFAULT_PERMISSIONS_QUERY
The default query to retrieve all permissions for the role
167 168 169 |
# File '/Users/julien/java/vertx-aggregator/modules/vertx-lang-ruby/vertx-lang-ruby/target/classes/vertx-auth-jdbc/jdbc_auth.rb', line 167 def self.DEFAULT_PERMISSIONS_QUERY Java::IoVertxExtAuthJdbc::JDBCAuth.DEFAULT_PERMISSIONS_QUERY end |
+ (Object) DEFAULT_ROLE_PREFIX
The default role prefix
171 172 173 |
# File '/Users/julien/java/vertx-aggregator/modules/vertx-lang-ruby/vertx-lang-ruby/target/classes/vertx-auth-jdbc/jdbc_auth.rb', line 171 def self.DEFAULT_ROLE_PREFIX Java::IoVertxExtAuthJdbc::JDBCAuth.DEFAULT_ROLE_PREFIX end |
+ (Object) DEFAULT_ROLES_QUERY
The default query to retrieve all roles for the user
163 164 165 |
# File '/Users/julien/java/vertx-aggregator/modules/vertx-lang-ruby/vertx-lang-ruby/target/classes/vertx-auth-jdbc/jdbc_auth.rb', line 163 def self.DEFAULT_ROLES_QUERY Java::IoVertxExtAuthJdbc::JDBCAuth.DEFAULT_ROLES_QUERY end |
+ (Object) j_api_type
34 35 36 |
# File '/Users/julien/java/vertx-aggregator/modules/vertx-lang-ruby/vertx-lang-ruby/target/classes/vertx-auth-jdbc/jdbc_auth.rb', line 34 def self.j_api_type @@j_api_type end |
+ (Object) j_class
37 38 39 |
# File '/Users/julien/java/vertx-aggregator/modules/vertx-lang-ruby/vertx-lang-ruby/target/classes/vertx-auth-jdbc/jdbc_auth.rb', line 37 def self.j_class Java::IoVertxExtAuthJdbc::JDBCAuth.java_class end |
+ (Object) unwrap(obj)
31 32 33 |
# File '/Users/julien/java/vertx-aggregator/modules/vertx-lang-ruby/vertx-lang-ruby/target/classes/vertx-auth-jdbc/jdbc_auth.rb', line 31 def @@j_api_type.unwrap(obj) obj.j_del end |
+ (Object) wrap(obj)
28 29 30 |
# File '/Users/julien/java/vertx-aggregator/modules/vertx-lang-ruby/vertx-lang-ruby/target/classes/vertx-auth-jdbc/jdbc_auth.rb', line 28 def @@j_api_type.wrap(obj) JDBCAuth.new(obj) end |
Instance Method Details
- (void) authenticate(authInfo = nil) { ... }
This method returns an undefined value.
Authenticate a user.The first argument is a JSON object containing information for authenticating the user. What this actually contains depends on the specific implementation. In the case of a simple username/password based authentication it is likely to contain a JSON object with the following structure:
{
"username": "tim",
"password": "mypassword"
}
For other types of authentication it contain different information - for example a JWT token or OAuth bearer token.
If the user is successfully authenticated a object is passed to the handler in an AsyncResult. The user object can then be used for authorisation.
58 59 60 61 62 63 |
# File '/Users/julien/java/vertx-aggregator/modules/vertx-lang-ruby/vertx-lang-ruby/target/classes/vertx-auth-jdbc/jdbc_auth.rb', line 58 def authenticate(authInfo=nil) if authInfo.class == Hash && block_given? return @j_del.java_method(:authenticate, [Java::IoVertxCoreJson::JsonObject.java_class,Java::IoVertxCore::Handler.java_class]).call(::Vertx::Util::Utils.to_json_object(authInfo),(Proc.new { |ar| yield(ar.failed ? ar.cause : nil, ar.succeeded ? ::Vertx::Util::Utils.safe_create(ar.result,::VertxAuthCommon::User) : nil) })) end raise ArgumentError, "Invalid arguments when calling authenticate(#{authInfo})" end |
- (String) compute_hash(password = nil, salt = nil, version = nil)
Compute the hashed password given the unhashed password and the salt
The implementation relays to the JDBCHashStrategy provided.
121 122 123 124 125 126 127 128 |
# File '/Users/julien/java/vertx-aggregator/modules/vertx-lang-ruby/vertx-lang-ruby/target/classes/vertx-auth-jdbc/jdbc_auth.rb', line 121 def compute_hash(password=nil,salt=nil,version=nil) if password.class == String && salt.class == String && !block_given? && version == nil return @j_del.java_method(:computeHash, [Java::java.lang.String.java_class,Java::java.lang.String.java_class]).call(password,salt) elsif password.class == String && salt.class == String && version.class == Fixnum && !block_given? return @j_del.java_method(:computeHash, [Java::java.lang.String.java_class,Java::java.lang.String.java_class,Java::int.java_class]).call(password,salt,version) end raise ArgumentError, "Invalid arguments when calling compute_hash(#{password},#{salt},#{version})" end |
- (String) generate_salt
Compute a salt string.
The implementation relays to the JDBCHashStrategy provided.
133 134 135 136 137 138 |
# File '/Users/julien/java/vertx-aggregator/modules/vertx-lang-ruby/vertx-lang-ruby/target/classes/vertx-auth-jdbc/jdbc_auth.rb', line 133 def generate_salt if !block_given? return @j_del.java_method(:generateSalt, []).call() end raise ArgumentError, "Invalid arguments when calling generate_salt()" end |
- (self) set_authentication_query(authenticationQuery = nil)
Set the authentication query to use. Use this if you want to override the default authentication query.
77 78 79 80 81 82 83 |
# File '/Users/julien/java/vertx-aggregator/modules/vertx-lang-ruby/vertx-lang-ruby/target/classes/vertx-auth-jdbc/jdbc_auth.rb', line 77 def set_authentication_query(authenticationQuery=nil) if authenticationQuery.class == String && !block_given? @j_del.java_method(:setAuthenticationQuery, [Java::java.lang.String.java_class]).call(authenticationQuery) return self end raise ArgumentError, "Invalid arguments when calling set_authentication_query(#{authenticationQuery})" end |
- (self) set_nonces(nonces = nil)
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.
151 152 153 154 155 156 157 |
# File '/Users/julien/java/vertx-aggregator/modules/vertx-lang-ruby/vertx-lang-ruby/target/classes/vertx-auth-jdbc/jdbc_auth.rb', line 151 def set_nonces(nonces=nil) if nonces.class == Array && !block_given? @j_del.java_method(:setNonces, [Java::IoVertxCoreJson::JsonArray.java_class]).call(::Vertx::Util::Utils.to_json_array(nonces)) return self end raise ArgumentError, "Invalid arguments when calling set_nonces(#{nonces})" end |
- (self) set_permissions_query(permissionsQuery = nil)
Set the permissions query to use. Use this if you want to override the default permissions query.
97 98 99 100 101 102 103 |
# File '/Users/julien/java/vertx-aggregator/modules/vertx-lang-ruby/vertx-lang-ruby/target/classes/vertx-auth-jdbc/jdbc_auth.rb', line 97 def (=nil) if .class == String && !block_given? @j_del.java_method(:setPermissionsQuery, [Java::java.lang.String.java_class]).call() return self end raise ArgumentError, "Invalid arguments when calling set_permissions_query(#{})" end |
- (self) set_role_prefix(rolePrefix = nil)
Set the role prefix to distinguish from permissions when checking for isPermitted requests.
107 108 109 110 111 112 113 |
# File '/Users/julien/java/vertx-aggregator/modules/vertx-lang-ruby/vertx-lang-ruby/target/classes/vertx-auth-jdbc/jdbc_auth.rb', line 107 def set_role_prefix(rolePrefix=nil) if rolePrefix.class == String && !block_given? @j_del.java_method(:setRolePrefix, [Java::java.lang.String.java_class]).call(rolePrefix) return self end raise ArgumentError, "Invalid arguments when calling set_role_prefix(#{rolePrefix})" end |
- (self) set_roles_query(rolesQuery = nil)
Set the roles query to use. Use this if you want to override the default roles query.
87 88 89 90 91 92 93 |
# File '/Users/julien/java/vertx-aggregator/modules/vertx-lang-ruby/vertx-lang-ruby/target/classes/vertx-auth-jdbc/jdbc_auth.rb', line 87 def set_roles_query(rolesQuery=nil) if rolesQuery.class == String && !block_given? @j_del.java_method(:setRolesQuery, [Java::java.lang.String.java_class]).call(rolesQuery) return self end raise ArgumentError, "Invalid arguments when calling set_roles_query(#{rolesQuery})" end |