Подписание OpenSAML с помощью Azure Key Vault с использованием Azure KeyVaultJcaProvider: engineInitSign() не поддерживаJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Подписание OpenSAML с помощью Azure Key Vault с использованием Azure KeyVaultJcaProvider: engineInitSign() не поддержива

Сообщение Anonymous »

Я пытаюсь подписать ответ OpenSAML с помощью Azure KeyVault, но поведение хранилища ключей по умолчанию не позволяет мне подписывать полезные данные, поскольку KeyVaultJcaProvider имеет KeyVaultKeylessRsa256Signature для подписи «SHA256withRSA».
Не существует простых способов перезаписать это поведение в KeyVaultJcaProvider
В идеале, я хочу настроить службу следующим образом, чтобы подписывающая сторона OpenSAML использовала RSASignature без использования KeyVaultKeylessRsa256Signature, но я не нашел способа обеспечить это.
putService ("Signature.SHA256withRSA","sun.security.rsa.RSASignature$SHA256withRSA")

Альтернативно, есть ли более простой способ подписать SAML с помощью OpenSAML, передав JCAProvider?
В моем коде есть следующее:
Application.java
Security.insertProviderAt(new KeyVaultJcaProvider(), 1); // working as expected
SpringApplication.run(Application.class, args);

Конфигурация, которая устанавливает учетные данные для подписи как сертификат BasicX509
@Bean
public Credential samlCredential(...) { // working as expected
...

X509Certificate certificate = (X509Certificate) keyStore.getCertificate(alias);
PrivateKey privateKey = (PrivateKey) keyStore.getKey(alias, password.toCharArray());

BasicX509Credential credential = new BasicX509Credential(certificate);
credential.setPrivateKey(privateKey);

return credential;
}

Код SAML >>
samlObject.setSignature(signature);

XMLObjectProviderRegistrySupport.getMarshallerFactory()
.getMarshaller(samlObject)
.marshall(samlObject);

Signer.signObject(signature); // BREAKS because of the JCA returning AzureKeyLessSignature which doesnt work with OpenSAML (I think?)

Это трассировка стека ошибок:
engineInitSign() not supported which private key is not instance of KeyVaultPrivateKey
at com.azure.security.keyvault.jca.implementation.signature.AbstractKeyVaultKeylessSignature.engineInitSign(AbstractKeyVaultKeylessSignature.java:77)
at com.azure.security.keyvault.jca.implementation.signature.AbstractKeyVaultKeylessSignature.engineInitSign(AbstractKeyVaultKeylessSignature.java:83)
at java.base/java.security.Signature$Delegate.engineInitSign(Signature.java:1357)
at java.base/java.security.Signature.initSign(Signature.java:636)
at org.apache.xml.security.algorithms.SignatureAlgorithmSpi.engineInitSign(SignatureAlgorithmSpi.java:212)
at org.apache.xml.security.algorithms.implementations.SignatureBaseRSA.engineInitSign(SignatureBaseRSA.java:130)
at org.apache.xml.security.algorithms.implementations.SignatureBaseRSA.engineInitSign(SignatureBaseRSA.java:136)
at org.apache.xml.security.algorithms.SignatureAlgorithm.initSign(SignatureAlgorithm.java:273)
at org.apache.xml.security.signature.XMLSignature.sign(XMLSignature.java:793)
at org.opensaml.xmlsec.signature.support.impl.provider.ApacheSantuarioSignerProviderImpl.signObject(ApacheSantuarioSignerProviderImpl.java:59)
at org.opensaml.xmlsec.signature.support.Signer.signObject(Signer.java:76)


Подробнее здесь: https://stackoverflow.com/questions/798 ... der-engine
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»