Hola, yo utilizo ( más o menos ) el siguiente código que sirve tanto para Firebird como para Interbase. La única diferencia, en el caso de firebird, es que si le das permisos a un usuario para mantener usuarios, debes introducir en la conexión el role RDB$ADMIN. En el caso de interbase, con dar permisos de lectura/escritura/borrado a un usuario en la tabla de usuarios de admin.ib es suficiente, para que pueda administrar cuentas de usuario.
Código:
with TIBSecurityService.Create( nil ) do
try
ServerName := 'localhost';
LoginPrompt := False;
Params.Add( 'user_name=' + UsuarioAdministrador );
Params.Add( 'password=' + UsuarioAdministradorClave;
if( Config.Conexiones.ConexionActiva.EsFirebird25Superior and
( AnsiCompareText( UsuarioAdministrador, 'SYSDBA' ) <> 0 ) )then
SQLRole := 'RDB$ADMIN';
Active := True;
FirstName := UsuarioNombre;
MiddleName := '';
LastName := UsuarioApellidos;
UserID := 0;
GroupID := 0;
UserName := Usuario;
Password := UsuarioClave;
case TipoAccion of
1: AddUser;
2,4: ModifyUser;
3: DeleteUser;
end
finally
Free;
end;