/** {@inheritDoc} */ protected void processChildElement(XMLObject parentSAMLObject, XMLObject childSAMLObject) throws UnmarshallingException { Subject subject = (Subject) parentSAMLObject; if (childSAMLObject instanceof NameIdentifier) { subject.setNameIdentifier((NameIdentifier) childSAMLObject); } else if (childSAMLObject instanceof SubjectConfirmation) { subject.setSubjectConfirmation((SubjectConfirmation) childSAMLObject); } else { super.processChildElement(parentSAMLObject, childSAMLObject); } } }
/** {@inheritDoc} */ @Override protected void doExecute(@Nonnull final ProfileRequestContext profileRequestContext) { int count = 0; for (final Assertion assertion : response.getAssertions()) { for (final Statement statement : assertion.getStatements()) { if (statement instanceof SubjectStatement) { final Subject subject = getStatementSubject((SubjectStatement) statement); final NameIdentifier existing = subject.getNameIdentifier(); if (existing == null || overwriteExisting) { subject.setNameIdentifier(cloneNameIdentifier()); count ++; } } } } if (count > 0) { log.debug("{} Added NameIdentifier to {} statement subject(s)", getLogPrefix(), count); } }
/** {@inheritDoc} */ @Override protected void doExecute(@Nonnull final ProfileRequestContext profileRequestContext) { final NameIdentifier nameIdentifier = generateNameIdentifier(profileRequestContext); if (nameIdentifier == null) { log.debug("{} Unable to generate a NameIdentifier, leaving empty", getLogPrefix()); return; } int count = 0; for (final Assertion assertion : assertions) { for (final Statement statement : assertion.getStatements()) { if (statement instanceof SubjectStatement) { final Subject subject = getStatementSubject((SubjectStatement) statement); final NameIdentifier existing = subject.getNameIdentifier(); if (existing == null || overwriteExisting) { subject.setNameIdentifier(count > 0 ? cloneNameIdentifier(nameIdentifier) : nameIdentifier); count ++; } } } } if (count > 0) { log.debug("{} Added NameIdentifier to {} statement subject(s)", getLogPrefix(), count); } }
/** * Build a new subject. * * @param identifier subject identifier * @return new subject */ @Nonnull private Subject newSubject(final String identifier) { final SubjectConfirmation confirmation = newSAMLObject( SubjectConfirmation.class, SubjectConfirmation.DEFAULT_ELEMENT_NAME); final ConfirmationMethod method = newSAMLObject( ConfirmationMethod.class, ConfirmationMethod.DEFAULT_ELEMENT_NAME); method.setConfirmationMethod(ConfirmationMethod.METHOD_ARTIFACT); confirmation.getConfirmationMethods().add(method); final NameIdentifier nameIdentifier = newSAMLObject(NameIdentifier.class, NameIdentifier.DEFAULT_ELEMENT_NAME); nameIdentifier.setValue(identifier); final Subject subject = newSAMLObject(Subject.class, Subject.DEFAULT_ELEMENT_NAME); subject.setNameIdentifier(nameIdentifier); subject.setSubjectConfirmation(confirmation); return subject; }
/** * New subject element with given confirmation method. * * @param identifier the identifier * @param confirmationMethod the confirmation method * @return the subject */ public Subject newSubject(final String identifier, final String confirmationMethod) { final SubjectConfirmation confirmation = newSamlObject(SubjectConfirmation.class); final ConfirmationMethod method = newSamlObject(ConfirmationMethod.class); method.setConfirmationMethod(confirmationMethod); confirmation.getConfirmationMethods().add(method); final NameIdentifier nameIdentifier = newSamlObject(NameIdentifier.class); nameIdentifier.setNameIdentifier(identifier); final Subject subject = newSamlObject(Subject.class); subject.setNameIdentifier(nameIdentifier); subject.setSubjectConfirmation(confirmation); return subject; }
subjectConfirmation.setKeyInfo(keyInfo); subject.setNameIdentifier(nameIdentifier); subject.setSubjectConfirmation(subjectConfirmation);