Подписание и шифрование сообщения SOAP с использованием Apache Rampart
Я хочу зашифровать сообщение SOAP открытым ключом Сервера и подписать то же сообщение закрытым ключом клиента. В идеале ключи для подписи и шифрования разные.
Ссылался на примеры Apache Rampart от команды WSO2. Один из приведенных примеров конфигурации Rampart:
RampartConfig rampartConfig = new RampartConfig();
Properties merlinProp = new Properties();
merlinProp.put("org.apache.ws.security.crypto.merlin.keystore.type", "JKS");
merlinProp.put("org.apache.ws.security.crypto.merlin.file","C:/Documents and Settings/abdul.mujeeb/workspace/Axis2Clients/src/certs/oasis.jks");
merlinProp.put("org.apache.ws.security.crypto.merlin.keystore.password", "password");
CryptoConfig sigCryptoConfig = new CryptoConfig();
sigCryptoConfig.setProvider("org.apache.ws.security.components.crypto.Merlin");
sigCryptoConfig.setProp(merlinProp);
CryptoConfig encrCryptoConfig = new CryptoConfig();
encrCryptoConfig.setProvider("org.apache.ws.security.components.crypto.Merlin");
encrCryptoConfig.setProp(merlinProp);
rampartConfig.setUserCertAlias("alice");
rampartConfig.setEncryptionUser("bob1");
rampartConfig.setSigCryptoConfig(sigCryptoConfig);
rampartConfig.setEncrCryptoConfig(encrCryptoConfig);
rampartConfig.setPwCbClass("com.rolta.axis2.client.UserNameCallbackHandler");
В примере no where указывается открытый ключ сервера, который будет использоваться для шифрования сообщения.
Несколько вопросов из приведенного выше примера:
1) Что обозначает функция rampartConfig.setEncryptionUser()? Как зашифровать сообщение SOAP с помощью открытого ключа сервера?
2) Для чего предназначена функция rampartConfig.setUserCertAlias ()? Подписание? Шифрование или оба?
Благодарю.
1 ответ
То, что вы предоставили, это как программно установить конфигурацию rampart. Установленные здесь методы эквивалентны параметрам в конфигурации валов. Все эти параметры перечислены в руководстве по настройке rampart.
Более полезное объяснение двух свойств может быть найдено в этом сообщении в блоге. Короче,
encryptionUser
- Псевдоним для открытого ключа, который будет использоваться для шифрования сообщения. Сертификат открытого ключа доступен в хранилище ключей под этим псевдонимом.
userCertAlias
- Псевдоним, используемый для получения пароля соответствующего закрытого ключа из CallbackHandler для подписи.