Значение пользовательского атрибута OpenSAML - PullRequest
3 голосов
/ 01 августа 2011

Я пытаюсь создать ответ SAML. Один из атрибутов, который составляет утверждение, называется адресом, и значение атрибута должно быть пользовательским типом, определенным в XSD. Как добавить пользовательские типы значений атрибутов в ответ?

Ответы [ 2 ]

4 голосов
/ 03 августа 2011

Если значение вашего атрибута XML находится в строковой форме:


String yourXMLFragment = "...";

AttributeStatementBuilder attributeStatementBuilder = 
   (AttributeStatementBuilder) builderFactory.getBuilder(AttributeStatement.DEFAULT_ELEMENT_NAME);
AttributeStatement attributeStatement = attributeStatementBuilder.buildObject();

AttributeBuilder attributeBuilder = 
   (AttributeBuilder) builderFactory.getBuilder(Attribute.DEFAULT_ELEMENT_NAME);
Attribute attr = attributeBuilder.buildObject();
attr.setName("yourAttributeName");

XSAnyBuilder sb2 = (XSAnyBuilder) builderFactory.getBuilder(XSAny.TYPE_NAME);
XSAny attrAny = sb2.buildObject(AttributeValue.DEFAULT_ELEMENT_NAME, XSAny.TYPE_NAME);
attrAny.setTextContent(yourXMLFragment.trim());

attr.getAttributeValues().add(attrAny);
attributeStatement.getAttributes().add(attr);
0 голосов
/ 26 марта 2013

На самом деле это выше не дает правильных результатов.Приведенный выше пример можно использовать только для создания xsany с текстовым содержимым, а не с содержимым xml (содержимое xml экранируется).

Таким образом, после поиска в источниках opensaml, следующее работало как нужно:

...