use of org.opensaml.saml.saml2.core.NameIDType in project cas by apereo.
the class SamlProfileSamlAttributeStatementBuilderTests method verifyAttributeAsNameIDSameAsSubject.
@Test
public void verifyAttributeAsNameIDSameAsSubject() throws Exception {
val service = getSamlRegisteredServiceForTestShib();
service.getAttributeValueTypes().put("customNameId", NameIDType.class.getSimpleName());
val adaptor = SamlRegisteredServiceServiceProviderMetadataFacade.get(samlRegisteredServiceCachingMetadataResolver, service, service.getServiceId()).get();
val buildContext = SamlProfileBuilderContext.builder().samlRequest(getAuthnRequestFor(service)).httpRequest(new MockHttpServletRequest()).httpResponse(new MockHttpServletResponse()).authenticatedAssertion(getAssertion(Map.of("customNameId", List.of(UUID.randomUUID().toString())))).registeredService(service).adaptor(adaptor).binding(SAMLConstants.SAML2_POST_BINDING_URI).build();
val statement = samlProfileSamlAttributeStatementBuilder.build(buildContext);
val attributes = statement.getAttributes();
assertFalse(attributes.isEmpty());
val result = attributes.stream().filter(a -> a.getName().equals("customNameId")).findFirst();
assertTrue(result.isPresent());
assertTrue(result.get().getAttributeValues().get(0) instanceof NameIDType);
}
use of org.opensaml.saml.saml2.core.NameIDType in project cas by apereo.
the class SamlProfileSamlAttributeStatementBuilderTests method verifyAttributeAsNameIDPersistent.
@Test
public void verifyAttributeAsNameIDPersistent() throws Exception {
val service = getSamlRegisteredServiceForTestShib();
service.getAttributeValueTypes().put("customNameId", NameIDType.PERSISTENT);
val adaptor = SamlRegisteredServiceServiceProviderMetadataFacade.get(samlRegisteredServiceCachingMetadataResolver, service, service.getServiceId()).get();
val buildContext = SamlProfileBuilderContext.builder().samlRequest(getAuthnRequestFor(service)).httpRequest(new MockHttpServletRequest()).httpResponse(new MockHttpServletResponse()).authenticatedAssertion(getAssertion(Map.of("customNameId", List.of(UUID.randomUUID().toString())))).registeredService(service).adaptor(adaptor).binding(SAMLConstants.SAML2_POST_BINDING_URI).build();
val statement = samlProfileSamlAttributeStatementBuilder.build(buildContext);
val attributes = statement.getAttributes();
assertFalse(attributes.isEmpty());
val result = attributes.stream().filter(a -> a.getName().equals("customNameId")).findFirst();
assertTrue(result.isPresent());
assertTrue(result.get().getAttributeValues().get(0) instanceof NameIDType);
}
use of org.opensaml.saml.saml2.core.NameIDType in project cas by apereo.
the class AbstractSamlObjectBuilder method newAttributeValue.
/**
* New attribute value.
*
* @param value the value
* @param valueType the value type
* @param elementName the element name
* @return the xS string
*/
protected XMLObject newAttributeValue(final Object value, final String valueType, final QName elementName) {
LOGGER.trace("Creating new attribute value XMLObject for value: [{}], value type: [{}], QName: [{}]", value, valueType, elementName);
if (value instanceof NameIDType) {
LOGGER.trace(LOG_MESSAGE_ATTR_CREATED, value);
((NameIDType) value).detach();
return (NameIDType) value;
}
if (XSString.class.getSimpleName().equalsIgnoreCase(valueType)) {
val builder = new XSStringBuilder();
val attrValueObj = builder.buildObject(elementName, XSString.TYPE_NAME);
attrValueObj.setValue(value.toString());
LOGGER.trace(LOG_MESSAGE_ATTR_CREATED, attrValueObj);
return attrValueObj;
}
if (XSURI.class.getSimpleName().equalsIgnoreCase(valueType)) {
val builder = new XSURIBuilder();
val attrValueObj = builder.buildObject(elementName, XSURI.TYPE_NAME);
attrValueObj.setURI(value.toString());
LOGGER.trace(LOG_MESSAGE_ATTR_CREATED, attrValueObj);
return attrValueObj;
}
if (XSBoolean.class.getSimpleName().equalsIgnoreCase(valueType)) {
val builder = new XSBooleanBuilder();
val attrValueObj = builder.buildObject(elementName, XSBoolean.TYPE_NAME);
attrValueObj.setValue(XSBooleanValue.valueOf(value.toString().toLowerCase()));
LOGGER.trace(LOG_MESSAGE_ATTR_CREATED, attrValueObj);
return attrValueObj;
}
if (XSInteger.class.getSimpleName().equalsIgnoreCase(valueType)) {
val builder = new XSIntegerBuilder();
val attrValueObj = builder.buildObject(elementName, XSInteger.TYPE_NAME);
attrValueObj.setValue(Integer.valueOf(value.toString()));
LOGGER.trace(LOG_MESSAGE_ATTR_CREATED, attrValueObj);
return attrValueObj;
}
if (XSDateTime.class.getSimpleName().equalsIgnoreCase(valueType)) {
val builder = new XSDateTimeBuilder();
val attrValueObj = builder.buildObject(elementName, XSDateTime.TYPE_NAME);
attrValueObj.setValue(ZonedDateTime.parse(value.toString()).toInstant());
LOGGER.trace(LOG_MESSAGE_ATTR_CREATED, attrValueObj);
return attrValueObj;
}
if (XSBase64Binary.class.getSimpleName().equalsIgnoreCase(valueType)) {
val builder = new XSBase64BinaryBuilder();
val attrValueObj = builder.buildObject(elementName, XSBase64Binary.TYPE_NAME);
attrValueObj.setValue(value.toString());
LOGGER.trace(LOG_MESSAGE_ATTR_CREATED, attrValueObj);
return attrValueObj;
}
if (XSObject.class.getSimpleName().equalsIgnoreCase(valueType)) {
val mapper = new JacksonXmlSerializer();
val builder = new XSAnyBuilder();
val attrValueObj = builder.buildObject(elementName);
attrValueObj.setTextContent(mapper.writeValueAsString(value));
LOGGER.trace(LOG_MESSAGE_ATTR_CREATED, attrValueObj);
return attrValueObj;
}
val builder = new XSAnyBuilder();
val attrValueObj = builder.buildObject(elementName);
attrValueObj.setTextContent(value.toString());
LOGGER.trace(LOG_MESSAGE_ATTR_CREATED, attrValueObj);
return attrValueObj;
}
Aggregations