Как сгенерировать подпись Axis2 XML с распределенными сертификатами - PullRequest
0 голосов
/ 10 августа 2010

У меня возникла некоторая проблема.

У нас есть централизованный интерфейсный движок, который будет взаимодействовать с веб-службой, которая предоставит информационное дополнение и позволит отправить запрос во внешние системы.Все это хорошо и хорошо, пока мы не интегрируем это с требуемой безопасностью от этого провайдера.

Они выпускают сертификаты, распространяемые через смарт-карты (USB-ключ), которые конечный пользователь должен использовать для взаимодействия программного обеспечения с указаннымсистема (веб-сервисы).Они настаивают на том, чтобы (иногда множественная) подпись делалась на сертификате конечного пользователя на его USB-ключе.Закрытый ключ, конечно же, защищен паролем.

Как подключить Axis2, который в конечном итоге будет обрабатывать все это, к сертификатам на компьютере конечного пользователя.

Система в основном является устаревшим толстым клиентским приложением в Delphi 5, механизм интерфейса взаимодействует в основном с базой данных.Теперь нам удалось подключить фрагмент кода, который эффективно соединяет станцию ​​конечного пользователя с интерфейсным сервером через простой TCP-сокет.

---- EDIT ----

Мы внедрили решение с настраиваемым перехватчиком подписи в CXF (мы изменили с Axis), который пересылал содержимое сообщения на прокси-сервер подписи, который, в свою очередь, находил и подключал подходящую службу подписи, работающую в сеансе взаимодействия с пользователем.откуда исходный запрос пришел.

Я принял ответ Юджина, потому что, хотя мы не использовали указанные им компоненты, мы реализовали решение, которое следовало общим руководящим принципам его предложения.

Невозможно избежать того факта, что подпись должнабыть сделано в интерактивном сеансе пользователя из-за USB-токена.Дополнительные ограничения были наложены из-за того, что мы использовали устаревшие системы и из-за необходимости заставить систему работать в общей среде (сервер удаленного рабочего стола).Хотя это возможно, оно не поддерживается естественным образом фреймворками веб-служб или криптографическими библиотеками.

1 Ответ

0 голосов
/ 10 августа 2010

Если у вас есть сертификат, находящийся на клиентском USB-токене, то подпись (как криптографическая операция) должна выполняться на стороне клиента.Если вы можете изменить это приложение Delphi, то вы можете использовать SecureBlackbox для подписи.Я ничего не знаю об Axis2, но если он позволяет создавать и подключать пользовательские криптографические модули, то вы создаете тот, который возьмет хеш (который фактически является подписанным) и отправит его клиенту для подписания.

...