/** * Builds a name ID. The provided value is the textual content of the NameIdentifier. If a {@link * #nameIdQualifier} is not null it is used as the NameIdentifier's name qualifier, otherwise the * attribute issuer's entity id is used. * * @param nameIdValue value of the NameIdentifier * @param resolutionContext current resolution context * @return the constructed NameIdentifier * @throws ResolutionException if the IdP Name is empty. */ protected NameIdentifier buildNameId( @Nonnull @NotEmpty final String nameIdValue, @Nonnull final AttributeResolutionContext resolutionContext) throws ResolutionException { log.debug("{} building a SAML1 NameIdentifier with value of '{}'", getLogPrefix(), nameIdValue); final NameIdentifier nameIdentifier = nameIdentifierBuilder.buildObject(); nameIdentifier.setValue(nameIdValue); if (nameIdFormat != null) { log.debug("{} Format set to '{}'", getLogPrefix(), nameIdFormat); nameIdentifier.setFormat(nameIdFormat); } final String attributeIssuerID = StringSupport.trimOrNull(resolutionContext.getAttributeIssuerID()); if (nameIdQualifier != null) { nameIdentifier.setNameQualifier(nameIdQualifier); log.debug("{} NameQualifier set to '{}'", getLogPrefix(), nameIdQualifier); } else if (null != attributeIssuerID) { log.debug("{} NameQualifier set to '{}'", getLogPrefix(), attributeIssuerID); nameIdentifier.setNameQualifier(attributeIssuerID); } else { throw new ResolutionException(getLogPrefix() + " provided attribute issuer ID was empty"); } return nameIdentifier; }
private static IdPAttributeValue<?> saml1NameIdFor(final String ident) { NameIdentifier id = saml1Builder.buildObject(); id.setValue(ident); id.setFormat(NameIdentifier.X509_SUBJECT); id.setNameQualifier(QUALIFIER); return new XMLObjectAttributeValue(id); }
/** * 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; }
@Test public void testNameIdentifierValued() throws Exception { final Collection<? extends IdPAttributeValue<?>> values = Collections.singletonList(saml1NameIdFor(NAME_1)); final IdPAttribute inputAttribute = new IdPAttribute(ATTR_NAME); inputAttribute.setValues(values); prc.getSubcontext(RelyingPartyContext.class) .getSubcontext(AttributeContext.class, true) .setIdPAttributes(Collections.singleton(inputAttribute)); generator.setAttributeSourceIds(Collections.singletonList(ATTR_NAME)); generator.initialize(); final NameIdentifier outputNameId = generator.generate(prc, generator.getFormat()); Assert.assertNotNull(outputNameId); Assert.assertEquals(outputNameId.getValue(), NAME_1); Assert.assertEquals(outputNameId.getFormat(), NameIdentifier.X509_SUBJECT); Assert.assertEquals(outputNameId.getNameQualifier(), QUALIFIER); }