Я интегрирую cxf webservices, без пружин, подписываются сообщения. В качестве руководства я использовал этот учебник CXF Security. Я хочу хранить сертификаты x509 или хранилище ключей в db.
Я переопределил метод WSS4JOutInterceptor.loadCryptoFromPropertiesFile.Как читать хранилище ключей от db
@Override
protected Crypto loadCryptoFromPropertiesFile(String propFilename, RequestData reqData) throws WSSecurityException {
KeyStore ks = KeyStore.getInstance("JKS");
ks.load(...);
X509Certificate certificate = (X509Certificate) ks.getCertificate("client");
X509Certificate[] certificates = { certificate};
CertificateStore cs = new CertificateStore(certificates);
return cs;
}
Но несколько вопросов здесь:
1. Там же ошибка, как
Вызванная: java.lang.NullPointerException: при условии нулевого имени в javax.security.auth.x500.X500Principal . (X500Principal.java:172)
Я проверил и subjectDN не является нулевым
2. Я не уверен, если это путь, и я должен в тахометр как-то закрытый ключ подписать сообщение
Это может быть дубликатом, как http://stackoverflow.com/questions/3184502/storing-public-and-private-keys-in-a-database-or-keystore – fabfas
Я думаю, что мне не нужно читать хранилище ключей из db. Проблема заключается в WSS4JOutInterceptor, поскольку он читает свойства только в том случае, если я не ошибаюсь – ra74
Предполагая, что WSS4JOutInrerceptor читает или принимает только тип свойств, вы можете адаптировать свой код для свойств с помощью шаблона адаптера. Надеюсь, это поможет! – fabfas