in src/main/java/com/aws/sap/sample/lambda/sap/oauth/LocalSamlTokenFactory.java [240:286]
public String getSamlAssertion(Properties _cfg) throws SAMLException {
try {
Assertion assertion = createAssertion(_cfg);
AssertionMarshaller marshaller = new AssertionMarshaller();
Element plaintextElement = marshaller.marshall(assertion);
String originalAssertionString = XMLHelper.nodeToString(plaintextElement);
Credential signingCredential = getSigningCredential(_cfg);
Signature signature = (Signature) getSAMLBuilder().getBuilder(Signature.DEFAULT_ELEMENT_NAME)
.buildObject(Signature.DEFAULT_ELEMENT_NAME);
signature.setSigningCredential(signingCredential);
signature.setSignatureAlgorithm(SignatureConstants.ALGO_ID_SIGNATURE_RSA_SHA1);
signature.setCanonicalizationAlgorithm(SignatureConstants.ALGO_ID_C14N_EXCL_OMIT_COMMENTS);
KeyInfoBuilder keyInfoBuilder = (KeyInfoBuilder) getSAMLBuilder().getBuilder(KeyInfo.DEFAULT_ELEMENT_NAME);
KeyInfo keyInfo = keyInfoBuilder.buildObject();
X509DataBuilder x509databuilder = (X509DataBuilder) getSAMLBuilder()
.getBuilder(X509Data.DEFAULT_ELEMENT_NAME);
X509Data x509Data = x509databuilder.buildObject();
X509CertificateBuilder x509CertificateBuilder = (X509CertificateBuilder) getSAMLBuilder()
.getBuilder(org.opensaml.xml.signature.X509Certificate.DEFAULT_ELEMENT_NAME);
org.opensaml.xml.signature.X509Certificate certXMLAssertion = x509CertificateBuilder.buildObject();
certXMLAssertion.setValue(Base64.encodeBytes(signingCredential.getPublicKey().getEncoded()));
x509Data.getX509Certificates().add(certXMLAssertion);
keyInfo.getX509Datas().add(x509Data);
signature.setKeyInfo(keyInfo);
assertion.setSignature(signature);
Configuration.getMarshallerFactory().getMarshaller(assertion).marshall(assertion);
Signer.signObject(signature);
plaintextElement = marshaller.marshall(assertion);
originalAssertionString = XMLHelper.nodeToString(plaintextElement);
//OAuthTracer.trace(OAuthTracer.XML_TYPE, "SAML Assertion", originalAssertionString.getBytes());
return originalAssertionString;
} catch (Exception ex) {
throw new SAMLException(ex);
}
}