Подпись и авторизация по новому NCALayer
(1 чел.) (1) гость
  • Страница:
  • 1
  • 2

ТЕМА: Подпись и авторизация по новому NCALayer

Подпись и авторизация по новому NCALayer 1 год, 1 мес. назад #4180

  • Sayat
  • Осваиваюсь на форуме
  • Постов: 25
  • Репутация: 0
Здравствуйте.
I) Проблема авторизации.

Пытаюсь переделать механизм авторизации под новый NCALayer (SDK от 30 марта 2018г).

Раньше было так:
1. Юзер выбирает файл AUTH_***.p12;
2. Вводит пароль;
3. Видит свои данные из сертификата (ФИО, ИИН, срок действия и т.д.);
4. Нажимает "Войти". В этот момент подписывается XML с данными (с токеном или с датой) и передается на сервер;
5. На сервере проверяется подписанный XML, по результатам проверки юзеру дается доступ или нет;

При переходе на новый NCALayer возникают следующие проблемы:
1. При выборе файла AUTH_***.p12 выходит окошко NCALayer с выбором файла и вводом пароля. После выбора показываются данные из сертификата. Но когда юзер нажимает "Войти", идет попытка подписи XML, в этот момент еще раз открывается окошко для выбора файла и ввода пароля;
2. Когда идет попытка подписи, юзеру приходится выбирать ключ не AUTH, а GOST, но он не предназначен для входа.

Вопрос:
Как реализовать авторизацию/вход в ИС используя новый NCALayer?


II) Проблема подписи документов.

В данный момент, при подписывании электронных документов юзер выбирает ключ и вводит пароль по старому, без использования окошка с обновленного NCALayer. Мы хотим переделать это так, чтобы выбор ключа и ввод пароля были в окошке нового NCALayer'a, но мы с этого окна не можем получить введенный пароль и путь к ключу.

Вопрос:
Как нам получить пароль ключа для подписи электронного документа и путь к ключу, введенного юзером, из окошка нового NCALayer'a?

Спасибо.

Re: Подпись и авторизация по новому NCALayer 1 год, 1 мес. назад #4182

  • margulan
  • Модератор
  • Постов: 166
  • Репутация: 12
Выбор ключа авторизации или подписи зависит от параметра, который вы передаете в соответствующий метод. Если вам нужно использовать только ключ авторизации, используйте флаг "AUTH". Пр.: signXml(selectedStorage, "AUTH", xmlToSign, "signXmlBack");


На данный момент из NCALayer убрана возможность хранения и передачи пароля и путей в связи с потенциальными уязвимостями.

Re: Подпись и авторизация по новому NCALayer 1 год, 1 мес. назад #4186

  • Sayat
  • Осваиваюсь на форуме
  • Постов: 25
  • Репутация: 0
Касательно второго вопроса:

На данный момент из NCALayer убрана возможность хранения и передачи пароля и путей в связи с потенциальными уязвимостями.


Здесь нет необходимости в передаче путей и пароля в сторону клиента. Для формирования подписи ЭД, данные должны передаваться в модуль (Bundle) из NCALayer. Без этого смысл существования модулей теряется, так как подписывание с ЭЦП в модулях становится невозможным.

Спасибо.

Re: Подпись и авторизация по новому NCALayer 1 год, 1 мес. назад #4187

  • margulan
  • Модератор
  • Постов: 166
  • Репутация: 12
Можете изучить как это работает в Common Bundle на github.com/pkigovkz/NLCommonBundle

Re: Подпись и авторизация по новому NCALayer 1 год, 1 мес. назад #4190

  • Sayat
  • Осваиваюсь на форуме
  • Постов: 25
  • Репутация: 0
Спасибо за предоставленную информацию.

Изучил код по данной ссылке.

Возникает другой вопрос:
Как нам загружать в модуле класс

kz.gov.pki.knca.gui.dialog.SignerDialog 


и другие классы для отображения окна выбора пути и пароля при подписывании ЭД?
Изменено: 1 год, 1 мес. назад от Sayat.

Re: Подпись и авторизация по новому NCALayer 1 год, 1 мес. назад #4218

  • ololo
  • Живу я здесь
  • Постов: 464
  • Репутация: 57
Sayat написал:
Спасибо за предоставленную информацию.

Изучил код по данной ссылке.

Возникает другой вопрос:
Как нам загружать в модуле класс

kz.gov.pki.knca.gui.dialog.SignerDialog 


и другие классы для отображения окна выбора пути и пароля при подписывании ЭД?


Здравствуйте!
Класс SignerDialog не экспортирован модулем, поэтому недоступен снаружи.
Но вы можете обращаться от одного модуля к другому, находя их среди сервисов.
Приводите к ModuleService и вызываете process с нужными параметрами

String moduleServiceFilter = "(&(objectClass=" + ModuleService.class.getName() + ")(module=kz.gov.pki.knca.commonUtils))";
ServiceTracker<ModuleService, ModuleService> moduleService_tracker = new ServiceTracker(context, context.createFilter(logServiceFilter), null);
moduleService_tracker.open();
ModuleService moduleService = moduleService_tracker.getService();
if (moduleService == null) {
    context.addServiceListener((e) -> {
        if (e.getType() == ServiceEvent.REGISTERED) {
            moduleService = moduleService_tracker.getService((ServiceReference<ModuleService>) e.getServiceReference());
            info("Found ModuleService while listening");
        }
    }, moduleServiceFilter);
} else {
    info("Found ModuleService on load");
}


Дальше передаете метод и аргументы в json.

Но в случае обращения к другим модулям нет гарантии, что они не могут измениться и сломать работу вашего модуля.
gg wp
Изменено: 1 год, 1 мес. назад от ololo.
  • Страница:
  • 1
  • 2
FaLang translation system by Faboba