in modules/rampart-trust/src/main/java/org/apache/rahas/impl/SAMLTokenIssuer.java [528:580]
private AttributeStatement createSAMLAttributeStatement(Subject subject,
RahasData rahasData,
SAMLTokenIssuerConfig config)
throws TrustException {
Attribute[] attrs = null;
if (config.getCallbackHandler() != null) {
SAMLAttributeCallback cb = new SAMLAttributeCallback(rahasData);
SAMLCallbackHandler handler = config.getCallbackHandler();
try {
handler.handle(cb);
attrs = cb.getAttributes();
} catch (SAMLException e) {
throw new TrustException("unableToRetrieveCallbackHandler", e);
}
} else if (config.getCallbackHandlerName() != null
&& config.getCallbackHandlerName().trim().length() > 0) {
SAMLAttributeCallback cb = new SAMLAttributeCallback(rahasData);
SAMLCallbackHandler handler = null;
MessageContext msgContext = rahasData.getInMessageContext();
ClassLoader classLoader = msgContext.getAxisService().getClassLoader();
Class cbClass = null;
try {
cbClass = Loader.loadClass(classLoader, config.getCallbackHandlerName());
} catch (ClassNotFoundException e) {
throw new TrustException("cannotLoadPWCBClass",
new String[]{config.getCallbackHandlerName()}, e);
}
try {
handler = (SAMLCallbackHandler) cbClass.newInstance();
} catch (Exception e) {
throw new TrustException("cannotCreatePWCBInstance",
new String[]{config.getCallbackHandlerName()}, e);
}
try {
handler.handle(cb);
} catch (SAMLException e) {
throw new TrustException("unableToRetrieveCallbackHandler", e);
}
attrs = cb.getAttributes();
} else {
//TODO Remove this after discussing
Attribute attribute =
SAMLUtils.createAttribute("Name", "https://rahas.apache.org/saml/attrns", "Colombo/Rahas");
attrs = new Attribute[]{attribute};
}
AttributeStatement attributeStatement = SAMLUtils.createAttributeStatement(subject, Arrays.asList(attrs));
return attributeStatement;
}