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

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

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

10 строк кода в примере скажут больше, чем страница рассказов о нём.
...
Рейтинг: 0 / 0
23.06.2013, 17:29
    #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
23.06.2013, 18:49
    #38307504
SHeLEST1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Стандартные функции аутентификации
Знаю, что вопрос поставлен немного глупо, но мне необходимо добавить в приложение хоть какой то способ шифрования паролей, а коли есть готовый, то хотел использовать его(стандартный) Но даже это не получилось:(
...
Рейтинг: 0 / 0
24.06.2013, 00:51
    #38307702
suPPLer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Стандартные функции аутентификации
SHeLEST1,

для получения хешей из паролей (или комбинаций логин-пароль) можно воспользоваться функцией DBMS_OBFUSCATION_TOOLKIT.md5 . Пример собственной функции поверх этой, возвращающей читаемую строку-хеш: 7712838 .
...
Рейтинг: 0 / 0
25.06.2013, 23:08
    #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
25.06.2013, 23:23
    #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
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Стандартные функции аутентификации / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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