/** {@inheritDoc} */ protected void processChildElement(XMLObject parentObject, XMLObject childObject) throws UnmarshallingException { AttributeStatement attributeStatement = (AttributeStatement) parentObject; if (childObject instanceof Attribute) { attributeStatement.getAttributes().add((Attribute) childObject); } else if (childObject instanceof EncryptedAttribute) { attributeStatement.getEncryptedAttributes().add((EncryptedAttribute) childObject); } else { super.processChildElement(parentObject, childObject); } }
private Saml2Credentials buildSaml2Credentials(final ExtendedSAMLMessageContext context) { NameID nameId = (NameID) context.getSubjectNameIdentifier(); Assertion subjectAssertion = context.getSubjectAssertion(); List<Attribute> attributes = new ArrayList<Attribute>(); for (AttributeStatement attributeStatement : subjectAssertion.getAttributeStatements()) { for (Attribute attribute : attributeStatement.getAttributes()) { attributes.add(attribute); } if (attributeStatement.getEncryptedAttributes().size() > 0) { logger.warn("Encrypted attributes returned, but no keystore was provided."); } for (EncryptedAttribute encryptedAttribute : attributeStatement.getEncryptedAttributes()) { try { attributes.add(decrypter.decrypt(encryptedAttribute)); } catch (DecryptionException e) { logger.warn("Decryption of attribute failed, continue with the next one", e); } } } return new Saml2Credentials(nameId, attributes, subjectAssertion.getConditions(), getName()); }