Es gibt keine einfachen Möglichkeiten, dieses Verhalten in KeyVaultJcaProvider zu überschreiben
Idealerweise d Ich möchte den Dienst wie folgt festlegen, sodass OpenSAML Signer RSASignature ohne Verwendung von KeyVaultKeylessRsa256Signature verwendet, aber ich habe keine Möglichkeit gefunden, dies zu erzwingen.
Code: Select all
putService ("Signature.SHA256withRSA","sun.security.rsa.RSASignature$SHA256withRSA")
Ich habe Folgendes in meinem Code:
Application.java
Code: Select all
Security.insertProviderAt(new KeyVaultJcaProvider(), 1); // working as expected
SpringApplication.run(Application.class, args);
Code: Select all
@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;
}
Code: Select all
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?)
Code: Select all
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)
Mobile version