powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Стандартные функции аутентификации
11 сообщений из 11, страница 1 из 1
Стандартные функции аутентификации
    #38306957
SHeLEST1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите пожалуйста.
Хочу использовать custom_hash и custom_auth для своей аутентификации, чтобы идентично им шифровать пароль и авторизироваться в приложении. Как я понял нужно (создав идентичные функции и действовать с ними) внести в них просто свои данные таблицы пользователей. Далее создал схему с использованием функции custom_auth(2)(Копия первоначальной). Для таблицы создаю триггер чтоб при добавлении он добавляемое шифровал(пароль) но не могу понять как прогнать вводимый пароль через функцию шифрования? использование функции в insert нашел, но со вставкой пароля и прогона не могу разобраться...
...
Рейтинг: 0 / 0
Стандартные функции аутентификации
    #38306962
SHeLEST1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И српзу 2 вопрос чтоб не создавать кучу тем:
Имеется item типа checkbox or radiogroup(от ситуации) создан он не с помощью кода. Количество ячеек в строке определяю с помощью Number of Checkbox Columns. Можно ли как то повлиять на количество выводимых ячеек? т.е. поставить некоторое условие вывода количества ячеек-если P1=2, то ячеек 2? Создавать для каждой ячейки отдельный Item не хочу да и думаю есть более человеческое решение
...
Рейтинг: 0 / 0
Стандартные функции аутентификации
    #38307025
Gustly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SHeLEST1,

Что-нибудь типа цикла на яваскрипте и делать document.write("<input type='checkbox'>")
...
Рейтинг: 0 / 0
Стандартные функции аутентификации
    #38307036
SHeLEST1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gustly
Что-нибудь типа цикла на яваскрипте и делать document.write("<input type='checkbox'>")
Я просто думал что есть какое нибудь воздействие апексовое именно на свои же стандартные элементы.

----------------------------------------------------------------------------------------------------------
1 вопрос в Архи силе)
...
Рейтинг: 0 / 0
Стандартные функции аутентификации
    #38307251
SHeLEST1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Help help. Очень нужно шифровать вводимые пароли(( но никак не получается всё
...
Рейтинг: 0 / 0
Стандартные функции аутентификации
    #38307443
Фотография suPPLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SHeLEST1,

10 строк кода в примере скажут больше, чем страница рассказов о нём.
...
Рейтинг: 0 / 0
Стандартные функции аутентификации
    #38307464
SHeLEST1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
suPPLerSHeLEST1,

10 строк кода в примере скажут больше, чем страница рассказов о нём. Кода по сути нет из-за непонимания собственно понятия "как сделать чтобы делало"
Создал схему аутентификации как показано в примере http://applicationexpress.ru/apex-lessons/4-apex-lesson-4.html но просто добавил строку типа l_password:=custom_hash для хеширования функции. Вообщем как в custom функциях всё. Посмотрел триггеры к таблице Demo_users - там 2 триггера 1 из которых как я понял и используется при добавлении нового имени. Но я не могу понять как в этой стандартной схеме шифруются введенные в таблицу demo_users пароли. Хочу сделать так же но не могу понять как сделать и что сделать. Вообщем в творческом ступоре) Нашел 1 способ шифрования в гугле от американца с использованием различных package но слишком проблемно (хоть и расписано всё вроде) и почему то не прокатил такой способ
...
Рейтинг: 0 / 0
Стандартные функции аутентификации
    #38307504
SHeLEST1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Знаю, что вопрос поставлен немного глупо, но мне необходимо добавить в приложение хоть какой то способ шифрования паролей, а коли есть готовый, то хотел использовать его(стандартный) Но даже это не получилось:(
...
Рейтинг: 0 / 0
Стандартные функции аутентификации
    #38307702
Фотография suPPLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SHeLEST1,

для получения хешей из паролей (или комбинаций логин-пароль) можно воспользоваться функцией DBMS_OBFUSCATION_TOOLKIT.md5 . Пример собственной функции поверх этой, возвращающей читаемую строку-хеш: 7712838 .
...
Рейтинг: 0 / 0
Стандартные функции аутентификации
    #38310405
SHeLEST1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите в чем загвоздка:
Создал схему аутентификации на функции:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
create or replace function "USER_AUTH1" (p_username in VARCHAR2, p_password in VARCHAR2)
return BOOLEAN
is
  l_password varchar2(4000);
  l_stored_password varchar2(4000);
  l_expires_on date;
  l_count number;
begin
-- First, check to see if the user is in the user table
 select count(*) into l_count from X_USERS_DATA where UPPER(USER_NAME)=p_username;
if l_count > 0 then
  -- First, we fetch the stored hashed password & expire date
  select password, expires_on into l_stored_password, l_expires_on
   from demo_users where user_name = p_username;

  -- Next, we check to see if the user's account is expired
  -- If it is, return FALSE
if l_expires_on > sysdate or l_expires_on is null then

    -- If the account is not expired, we have to apply the custom hash
    -- function to the password

    l_password := custom_hash(p_username, p_password);

    -- Finally, we compare them to see if they are the same and return
    -- either TRUE or FALSE
    if l_password = l_stored_password then
      return true;
    else
      return false;
    end if;
 else
  return false;
end if;
else
  -- The username provided is not in the DEMO_USERS table
 return false;
end if;
end;&#8203;



Сначала зашел в приложение свободно изменив так
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
create or replace function "USER_AUTH1" (p_username in VARCHAR2, p_password in VARCHAR2)
return BOOLEAN
is
  l_password varchar2(4000);
  l_stored_password varchar2(4000);
  l_expires_on date;
  l_count number;
begin
-- First, check to see if the user is in the user table
 select count(*) into l_count from X_USERS_DATA where UPPER(USER_NAME)=p_username;
return true;


Потом процессом добавил в таблицу X_USERS_DATA значения "логин" "пароль" прогнав через апексовскую функцию CUSTOM HASH:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
create or replace function custom_hash (p_username in varchar2, p_password in varchar2)
return varchar2
is
  l_password varchar2(4000);
  l_salt varchar2(4000) := 'G8ROL3AELK4QG71DTXECTKPX5F1VJD';
begin

-- This function should be wrapped, as the hash algorhythm is exposed here.
-- You can change the value of l_salt or the method of which to call the
-- DBMS_OBFUSCATOIN toolkit, but you much reset all of your passwords
-- if you choose to do this.

l_password := utl_raw.cast_to_raw(dbms_obfuscation_toolkit.md5
  (input_string => p_password || substr(l_salt,10,13) || p_username ||
    substr(l_salt, 4,10)));
return l_password;
end;&#8203;


В итоге пароль зашифрован.
Убрал return true В user_auth1 , пытаюсь зайти чтоб уже аутентификация проверяла по зашифрованным а он мне в ответ
Код: plsql
1.
2.
ORA-01403: no data found
Error	ERR-10460 Unable to run authentication credential check function.


В чем беда? почему не находит мою добавленную запись или где то вообще косяк?
...
Рейтинг: 0 / 0
Стандартные функции аутентификации
    #38310421
SHeLEST1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SHeLEST1Подскажите в чем загвоздка:
Создал схему аутентификации на функции:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
create or replace function "USER_AUTH1" (p_username in VARCHAR2, p_password in VARCHAR2)
return BOOLEAN
is
  l_password varchar2(4000);
  l_stored_password varchar2(4000);
  l_expires_on date;
  l_count number;
begin
-- First, check to see if the user is in the user table
 select count(*) into l_count from X_USERS_DATA where UPPER(USER_NAME)=p_username;
if l_count > 0 then
  -- First, we fetch the stored hashed password & expire date
  select password, expires_on into l_stored_password, l_expires_on
   from demo_users where user_name = p_username;

  -- Next, we check to see if the user's account is expired
  -- If it is, return FALSE
if l_expires_on > sysdate or l_expires_on is null then

    -- If the account is not expired, we have to apply the custom hash
    -- function to the password

    l_password := custom_hash(p_username, p_password);

    -- Finally, we compare them to see if they are the same and return
    -- either TRUE or FALSE
    if l_password = l_stored_password then
      return true;
    else
      return false;
    end if;
 else
  return false;
end if;
else
  -- The username provided is not in the DEMO_USERS table
 return false;
end if;
end;&#8203;



Сначала зашел в приложение свободно изменив так
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
create or replace function "USER_AUTH1" (p_username in VARCHAR2, p_password in VARCHAR2)
return BOOLEAN
is
  l_password varchar2(4000);
  l_stored_password varchar2(4000);
  l_expires_on date;
  l_count number;
begin
-- First, check to see if the user is in the user table
 select count(*) into l_count from X_USERS_DATA where UPPER(USER_NAME)=p_username;
return true;


Потом процессом добавил в таблицу X_USERS_DATA значения "логин" "пароль" прогнав через апексовскую функцию CUSTOM HASH:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
create or replace function custom_hash (p_username in varchar2, p_password in varchar2)
return varchar2
is
  l_password varchar2(4000);
  l_salt varchar2(4000) := 'G8ROL3AELK4QG71DTXECTKPX5F1VJD';
begin

-- This function should be wrapped, as the hash algorhythm is exposed here.
-- You can change the value of l_salt or the method of which to call the
-- DBMS_OBFUSCATOIN toolkit, but you much reset all of your passwords
-- if you choose to do this.

l_password := utl_raw.cast_to_raw(dbms_obfuscation_toolkit.md5
  (input_string => p_password || substr(l_salt,10,13) || p_username ||
    substr(l_salt, 4,10)));
return l_password;
end;&#8203;


В итоге пароль зашифрован.
Убрал return true В user_auth1 , пытаюсь зайти чтоб уже аутентификация проверяла по зашифрованным а он мне в ответ
Код: plsql
1.
2.
ORA-01403: no data found
Error	ERR-10460 Unable to run authentication credential check function.


В чем беда? почему не находит мою добавленную запись или где то вообще косяк?
Я дурак и этим всё сказано) Всё работает
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Стандартные функции аутентификации
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]