powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Электронная цифровая подпись
25 сообщений из 86, страница 1 из 4
Электронная цифровая подпись
    #37825609
AlexProOra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пролистал support + otn forum + googl по фразам - apex digital signature и apex digital certificates.
Нормальных практик найти не смог :(
В данный момент решение видится такое:
1. юзер вставляет флэшку с файлом ЭЦП
2. в апексе на форме загружает ее в БЛОБ
3. средствами СУБД (пока не знаю какими, но скорей всего используя WEB сервисы) проверяется подлинность подписи и юзеру разрешается вносить изменения в БД.

Может кто носом ткнет в стандартные решения при использовании апекса или иные решения?


С Уважением,
Алексей.
...
Рейтинг: 0 / 0
Электронная цифровая подпись
    #37826406
AlexProOra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Начинаю копать в сторону Oracle Access Manager и КриптоПро CSP, детали тут.
...
Рейтинг: 0 / 0
Электронная цифровая подпись
    #37831081
ввгс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
когда-то занимался этим. вот как получилось реализовать.
основные шаги:
1. имеем любой токен (алладин, рутокен, уатокен и т.д.... ) с сертификатом и установленные соответствующие драйвера в ОС
2. в базе храним сертификат (открытую часть), его хэш и соотв. инфу об этом пользователе
3. пускаем апач с поддержкой SSL, настраиваем в нём обязательную авторизацию пользователя по сертификату
вот как-то так:
Код: sql
1.
2.
3.
4.
5.
<Directory /secure>
            SSLVerifyClient require
            SSLOptions +StdEnvVars +ExportCertData
            require valid-user
</Directory>


всё. остальное выглядит так:
1. пользователь открывает https://нечто/
2. браузер ему выкинет окошко с просьбой предоставить сертификат
3. пользователь тыкает в усб порт токен, вводит пин-код
4. апач на пару с браузером делают авторизацию, причём первый после этой успешной авторизации устанавливает значения переменных окружения, относящихся к клиентскому сертификату
5. пишем процедурку на pl/sql, которая получает переменные окружения и по ним определяет, чё это за пользователь
всё.
вот неполохая статья , чтобы понять как это будет работать
если интересно, сообщите. тогда будет более детально...
удачи.
...
Рейтинг: 0 / 0
Электронная цифровая подпись
    #37832173
AlexProOra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ввгс,
Огроманое Спасибо!!! копаю....

С Уважением,
Алексей.
...
Рейтинг: 0 / 0
Электронная цифровая подпись
    #37832459
ввгс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AlexProOra,
вот Вам в помощь мои наработки.
1. таблица пользователей должна быть примерно такой:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
create table app_users
(f_uid number not null, -- код пользователя
 f_uname varchar2(255) not null, -- имя пользователя
 f_cert blob, -- X.509
 f_certhash varchar2(4000), -- хэш X.509
 primary key (f_uid));
create unique index idx_app_users_uname on app_users (f_uname);
create unique index idx_app_users_certhash on app_users (f_certhash);


2. настойки дада для mod_plsql (dads.conf):
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
<Location /verysecure>
    SetHandler pls_handler
    Order allow,deny
    Allow from All
    AllowOverride None

    PlsqlDatabaseUsername APEX_PUBLIC_USER
    PlsqlDatabasePassword pass
    PlsqlDatabaseConnectString securedb TNSFormat
    PlsqlNLSLanguage AMERICAN_AMERICA.AL32UTF8
    PlsqlAuthenticationMode Basic
    PlsqlAlwaysDescribeProcedure Off
    PlsqlDefaultPage apex

    PlsqlCGIEnvironmentList SSL_CLIENT_S_DN
    PlsqlCGIEnvironmentList SSL_CLIENT_CERT
</Location>


обратите внимание на последние две строки!
3. ну и сама функция:
Код: 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.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
 function auth_ssl return integer is
   
  exEmptyCertificate exception;
  exUserNotFound exception;

  client_cert varchar2(8000);
  client_dn varchar2(4000);
  cert_hash varchar2(4000);
  blob_cert blob;
  raw_cert raw(32000);
  l_uid app_users.f_uid%type;
  l_uname app_users.f_uname%type;
 begin
   -- получаем DN и X.509 открытый ключ в base64 через переменные окружения
   client_dn   := owa_util.get_cgi_env('SSL_CLIENT_S_DN');
   client_cert := owa_util.get_cgi_env('SSL_CLIENT_CERT');
   if (client_cert is null) or (client_dn is null) then
    raise exEmptyCertificate;
   end if;
   
   -- удаляем комменты -----BEGIN CERTIFICATE----- -----END CERTIFICATE-----
   client_cert:=substr(client_cert,instr(client_cert,chr(10))+1);
   client_cert:=substr(client_cert,1,instr(client_cert,chr(10),-2)-1);

   -- декодируем открытый ключ из base64 в raw, потом хэшируем алгоритмом SHA
   dbms_lob.createtemporary(blob_cert,true,dbms_lob.session);
   raw_cert:=utl_encode.base64_decode(utl_raw.cast_to_raw(client_cert));
   dbms_lob.writeappend(blob_cert,utl_raw.length(raw_cert),raw_cert);
   cert_hash:=utl_raw.cast_to_varchar2(utl_encode.base64_encode((dbms_crypto.Hash(blob_cert,dbms_crypto.HASH_SH1))));
   dbms_lob.freetemporary(blob_cert);  
   
   -- поиск текущего пользователя по хэшу
   begin
    select f_uid,f_uname into l_uid,l_uname
    from app_users
    where f_certhash=cert_hash;
   exception when no_data_found then raise exUserNotFound;
   end; 
   
   -- возвращаем код пользователя
   return l_uid;
 
 -- обрабатываем исключения  
 exception
  when exEmptyCertificate then 
     -- ....
     return null; 
  when exUserNotFound then 
     -- ....
     return null;
  when others then 
     -- ....
     return null;
 end;


ну вот как-то так...
"а как будут заполняться поля f_cert и f_certhash в таблице app_users ?" - спросите Вы :)
а это уже решать Вам. у меня они автоматически импортируются из MS Active Directory, потому как ключики (токены) с ним интегрированы.
удачи.
...
Рейтинг: 0 / 0
Электронная цифровая подпись
    #37833170
AlexProOra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ввгс,

Нет слов... СПАСИБО!
...
Рейтинг: 0 / 0
Электронная цифровая подпись
    #37833224
heavyside
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Присоединяюсь к благодарностям, актуально весьма
...
Рейтинг: 0 / 0
Электронная цифровая подпись
    #38073544
metis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plsql
1.
2.
3.
4.
5.
owa_util.mime_header(wwv_flow_utilities.get_excel_mime_type, false );		
	htp.p( 'Content-Length: ' || dbms_lob.getlength( myfile ) );					
	htp.p( 'Content-disposition: attachment; filename="' || myfile_name || '";' );	
	owa_util.http_header_close;
	wpg_docload.download_file( myfile );  



Выходная форма формируется сборкой XML тегов в PLSQL процедуре. Как подписать полученный файл? Как обеспечить взаимодействие Апекса с JAVA , тукеном ... и др. Необходимо дать пользователю выбрать файл - ключ ЭЦП для возможности подписания выходной формы?
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Электронная цифровая подпись
    #38848024
AlexProOra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
metisВыходная форма формируется сборкой XML тегов в PLSQL процедуре. Как подписать полученный файл? Как обеспечить взаимодействие Апекса с JAVA , тукеном ... и др. Необходимо дать пользователю выбрать файл - ключ ЭЦП для возможности подписания выходной формы?

Вобщем я понял так:
1. Клиент получает токен с установленным сертификатом.
2. Ставим клиенту криптопровайдер (грубо говоря драйвер для токена).
3. Пользователь вставляет токен в комп, драйвер запрашивает pin, если pin указан верно - можно работать c сертификатом.
4. Используя Microsoft CryptoAPI получаем возможность работать с сертификатом из токена + всяки плюшки - получение хэшей и т.д.
4. А вот как теперь научиться с Microsoft CryptoAPI из APEX работать?

Вобщем вот мои мысли, но я в теме этой лошара, очень хочется разобраться, гуру поправьте плиз если что не так.

Попытка создания "ФАКа" о том как с ЭЦП в APEX работать:
1. если используем Apache - читаем труды ввгс 12692973 и говорим ему спасибо !
2. если используем Oracle REST Data Services то делаем .....?
Тут ступор, гугление ничего не дает. Как вариант - использовать JS?
Уважаемые! подсобите плиз в выборе грамотного решения для работы с Microsoft CryptoAPI! или тут другой подход более грамотен?

p.s если кто подскажет как получить SSL_CLIENT_CERT и SSL_CLIENT_S_DN в ORDS, инструкцию краткую напишу для всех.

Всех с наступившим 2015!
...
Рейтинг: 0 / 0
Электронная цифровая подпись
    #38848029
AlexProOra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чуть уточнюсь - как научить ords выставлять cgi переменные 'SSL_CLIENT_S_DN' и 'SSL_CLIENT_CERT' для дальнейшего их использования:

Код: plsql
1.
2.
client_dn   := owa_util.get_cgi_env('SSL_CLIENT_S_DN');
client_cert := owa_util.get_cgi_env('SSL_CLIENT_CERT');




А может ords сам эти переменные по умолчанию устанавливает если SSL включен? что показывает - sys.owa_util.print_cgi_env?

Вобщем в голове каша, народ, спасайте! :)
...
Рейтинг: 0 / 0
Электронная цифровая подпись
    #39065620
kollan7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
задача встала на отчеты сформированные через пользователям ставить электронные подписи..как я понял для этого достаточно Ords ? может плагин для этого дела есть? подскажите ссылку на фак статью
...
Рейтинг: 0 / 0
Электронная цифровая подпись
    #39065727
AlexProOra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kollan7задача встала на отчеты сформированные через пользователям ставить электронные подписи..как я понял для этого достаточно Ords ? может плагин для этого дела есть? подскажите ссылку на фак статью
Отчеты подписывать подписью пользователя который его формирует? или серверной? - разные задачи....
...
Рейтинг: 0 / 0
Электронная цифровая подпись
    #39065739
kollan7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AlexProOra,

Задача примерное такая.
Сейчас в Апексе формируется отчет и через BI Publisher формируется rtf-файл. Печатается бумажка.
Далее бумажка идет через согласование список начальников отделов. Список всегда разный.

Хотим чтобы начальники сами заходили в систему и ставили свою электронную..подпись на сформированный отчет
Как это лучше реализовать?
...
Рейтинг: 0 / 0
Электронная цифровая подпись
    #39065749
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kollan7,
Вам для галочки или юридически?
Для юристов нужна java.
Так и скажите шефу.
Я вон, мучаюсь с ords.
Пока никто не ответил что туда лазил
Для галки делайте кнопку Подписал и в логи имя машины, дату, время...
...
Рейтинг: 0 / 0
Электронная цифровая подпись
    #39065772
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kollan7AlexProOra,

Задача примерное такая.
Сейчас в Апексе формируется отчет и через BI Publisher формируется rtf-файл. Печатается бумажка.
Далее бумажка идет через согласование список начальников отделов. Список всегда разный.

Хотим чтобы начальники сами заходили в систему и ставили свою электронную..подпись на сформированный отчет
Как это лучше реализовать?

Ну хотя бы начать с того,что делать не rtf файл а pdf файл отчёта ибо pdf файл неизменяемый.
а в rtfе Вам кто нибудь пробел добавит с дуру случайно, куда нибудь...и всё цифровые подписи недействительные,и Вы долго будите разгребать...типа как так??? в напечатанной форме и в электронной всё вроде бы одинаково ,а цифровые подписи валидность не проходят.
...
Рейтинг: 0 / 0
Электронная цифровая подпись
    #39066064
AlexProOra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kollan7,
ЭЦП начальникам кто будет выдавать? свой УЦ или внешний... Может Вам простая электронная подпись подойдет, там все просто тогда (читайте фед.закон №63 ).
...
Рейтинг: 0 / 0
Электронная цифровая подпись
    #39066117
kollan7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AlexProOra,
лучше наверное свой .
ЭП для внутреннего корпоративного применения доступа. Да скорей всего будет pdf.

ORDS+APEX решит эту задачу?
...
Рейтинг: 0 / 0
Электронная цифровая подпись
    #39066261
kollan7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123kollan7,
Вам для галочки или юридически?
Для юристов нужна java.
Так и скажите шефу.
Я вон, мучаюсь с ords.
Пока никто не ответил что туда лазил
Для галки делайте кнопку Подписал и в логи имя машины, дату, время...

Не для галочки. Для галочки это просто apex-аутотентификация и логирование действий в базе.
Скорей для безопасников, чем для юристов. Для сугубой надежности.

Без явы никак?
...
Рейтинг: 0 / 0
Электронная цифровая подпись
    #39066286
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kollan7Без явы никак?
бесплатно никак. Профи надо будет платить.
Хоть админу, хоть JS'у, хоть Jav'исту.
...
Рейтинг: 0 / 0
Электронная цифровая подпись
    #39066317
AlexProOra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kollan7AlexProOra,
лучше наверное свой .
ЭП для внутреннего корпоративного применения доступа. Да скорей всего будет pdf.

ORDS+APEX решит эту задачу?
Да, если использовать простую ЭП.
...
Рейтинг: 0 / 0
Электронная цифровая подпись
    #39066346
kollan7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AlexProOraДа, если использовать простую ЭП.

Подскажите ссылку на фак или хорошую статью. Плагина нет?
Что для вас простая ЭП?
...
Рейтинг: 0 / 0
Электронная цифровая подпись
    #39066361
ввгс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AlexProOrap.s если кто подскажет как получить SSL_CLIENT_CERT и SSL_CLIENT_S_DN в ORDS, инструкцию краткую напишу для всех
поздновато, наверное, отвечать, но всё же...
получить очень просто. поставить ORDS за апачем!
вот как-то так:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
<Location /ords>
 SSLVerifyClient require
 SSLOptions +StdEnvVars +ExportCertData
 require valid-user

 RequestHeader set X-Client-DN %{SSL_CLIENT_S_DN}e
 RequestHeader set X-Client-Cert %{SSL_CLIENT_CERT}e
 
 Proxypass ajp://localhost:8009/ords
</Location>



ну а дальше всё также, как и раньше. имеем переменные окружения в ORDS (X-Client-DN, X-Client-Cert).
сам не пробовал, но должно выйти 100%!
...
Рейтинг: 0 / 0
Электронная цифровая подпись
    #39066421
AlexProOra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kollan7AlexProOraДа, если использовать простую ЭП.

Подскажите ссылку на фак или хорошую статью. Плагина нет?
Что для вас простая ЭП?

Ссылка на фак
статья 5 пункт 2 - это кстати не оффтоп ;)
Плагины есть как у випнет так и у криптопро + .... (это для тех кто хочет "честную" ЭП).
...
Рейтинг: 0 / 0
Электронная цифровая подпись
    #39066427
AlexProOra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ввгсAlexProOrap.s если кто подскажет как получить SSL_CLIENT_CERT и SSL_CLIENT_S_DN в ORDS, инструкцию краткую напишу для всех
поздновато, наверное, отвечать, но всё же...
получить очень просто. поставить ORDS за апачем!
вот как-то так:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
<Location /ords>
 SSLVerifyClient require
 SSLOptions +StdEnvVars +ExportCertData
 require valid-user

 RequestHeader set X-Client-DN %{SSL_CLIENT_S_DN}e
 RequestHeader set X-Client-Cert %{SSL_CLIENT_CERT}e
 
 Proxypass ajp://localhost:8009/ords
</Location>


ну а дальше всё также, как и раньше. имеем переменные окружения в ORDS (X-Client-DN, X-Client-Cert).
сам не пробовал, но должно выйти 100%!
На клиенте при этом должен стоять криптопровайдер который поддерживает .....?
просьба условия со стороны клиента дописать.

По времени - все в тему, возможно найдем идеальный вариант.
...
Рейтинг: 0 / 0
Электронная цифровая подпись
    #39066487
kollan7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо почитал.
Как я понял нам нужна для этой задачи достаточно неквалифицированной эл.подписи.Что кроме апекса и ORDS еще понадобится? дайте ссылку на реализацию технических конических деталей..я имел ввиду плагин для апекса который облегчит реализацию.
...
Рейтинг: 0 / 0
25 сообщений из 86, страница 1 из 4
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Электронная цифровая подпись
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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