public SubjectConfirmation newSubjectConfirmation(final String recipient, final ZonedDateTime notOnOrAfter,
                                                      final String inResponseTo, final ZonedDateTime notBefore,
                                                      final InetAddress address) {
        LOGGER.debug("Building subject confirmation for recipient [{}], in response to [{}]", recipient, inResponseTo);
        val confirmation = newSamlObject(SubjectConfirmation.class);
        confirmation.setMethod(SubjectConfirmation.METHOD_BEARER);
        val data = newSamlObject(SubjectConfirmationData.class);
        FunctionUtils.doIfNotBlank(recipient, data::setRecipient);
        FunctionUtils.doIfNotBlank(inResponseTo, data::setInResponseTo);
        FunctionUtils.doIfNotNull(address, __ -> data.setAddress(address.getHostAddress()));
        FunctionUtils.doIfNotNull(notOnOrAfter, __ -> data.setNotOnOrAfter(notOnOrAfter.toInstant()));
        FunctionUtils.doIfNotNull(notBefore, __ -> data.setNotBefore(notBefore.toInstant()));
        confirmation.setSubjectConfirmationData(data);
        return confirmation;
    }
New subject confirmation.

@param recipient    the recipient
@param notOnOrAfter the not on or after
@param inResponseTo the in response to
@param notBefore    the not before
@param address      the address
@return the subject confirmation
support/cas-server-support-saml-core-api/src/main/java/org/apereo/cas/support/saml/util/AbstractSaml20ObjectBuilder.java