Как создать XML-подпись Axis2 с помощью распределенных сертификатов

StackOverflow https://stackoverflow.com/questions/3443822

Вопрос

У меня есть некоторая проблема.

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

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

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

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

---- РЕДАКТИРОВАТЬ ----

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

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

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

Это было полезно?

Решение

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top