cxf-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Tóth Csaba <ig...@domen.hu>
Subject Re: custom xml fragment to the SAML attribute
Date Tue, 30 Jan 2018 12:02:42 GMT
Hello!

The problem is not about the place, where I can do that. the problem,
that I cant create the given XML fragment, because:
a, I dont get the attributes back (the SAML dont contains the attributes
of the element), the element is present (and an empty String value too)
b, I get XML error: "Cannot replace an element's default namespace"

There is an example (you send it), but that create an String element
with the same namespace (SAML2 namespace), and a know xsi:type
I need more complex XML structure, with a third part namespace, a
xsi:type attribute, and multiple attributes with third part namespaces.

Its not hard with the documentBuilder, but I dont know how to do this
with the OpenSAML XMLObjects.

Csaba



On 2018.01.30. 11:56, Colm O hEigeartaigh wrote:
> Are you trying to add this information to the SAML Assertion created in the
> STS after receiving a Claim? If so then you shouldn't be adding it to the
> "requestClaim", but to the ProcessedClaim instance that is created in the
> CallbackHandler. I added a test to CXF that shows how to do it in a
> CustomClaimsHandler:
>
> https://github.com/apache/cxf/blob/master/services/sts/systests/advanced/src/test/java/org/apache/cxf/systest/sts/deployment/CustomClaimsHandler.java
>
> Colm.
>
> On Mon, Jan 29, 2018 at 6:48 PM, Tóth Csaba <ignis@domen.hu> wrote:
>
>> Hello!
>> Thanx, but look like not helped:
>>
>>                                 XMLObjectBuilderFactory builderFactory =
>>
>> XMLObjectProviderRegistrySupport.getBuilderFactory();
>>                                 @SuppressWarnings("unchecked")
>>                                 XMLObjectBuilder<XSAny> xsAnyBuilder =
>>
>> (XMLObjectBuilder<XSAny>)builderFactory.getBuilder(XSAny.TYPE_NAME);
>>                                 XSAny attributeValue =
>>
>> xsAnyBuilder.buildObject(AttributeValue.DEFAULT_ELEMENT_NAME);
>>
>>                                 XSAny node =
>> xsAnyBuilder.buildObject(new QName("... namespace ... "," ... element
>> name... "),new QName("http://www.w3.org/2001/XMLSchema-instance","CE"));
>>
>> attributeValue.getUnknownXMLObjects().add(node);
>>
>>                                 node.getUnknownAttributes().put(new
>> QName(".. attr namespace...","Code"),code);
>>                                 requestClaim.addValue(attributeValue);
>>
>> but I get an error for the building the SAML, that "Cannot replace an
>> element's default namespace"
>> Csaba
>>
>>
>> On 2018.01.29. 17:59, Colm O hEigeartaigh wrote:
>>> This WSS4J unit test might help you - it shows how to add a custom
>>> Attribute:
>>>
>>> https://github.com/apache/wss4j/blob/94f0e42d03011fa97122bcd495d268
>> ff33a5107f/ws-security-dom/src/test/java/org/apache/
>> wss4j/dom/saml/SamlTokenTest.java#L578
>>> Colm.
>>>
>>> On Mon, Jan 29, 2018 at 3:42 PM, Tóth Csaba <ignis@domen.hu> wrote:
>>>
>>>> Hello!
>>>>
>>>> I need to put an XML fragment to one of the SAML Attribute:
>>>>
>>>> <saml-a:Attribute xmlns:saml-a="urn:oasis:names:tc:SAML:2.0:assertion"
>>>> xmlns:wsa="http://www.w3.org/2005/08/addressing">
>>>> <saml-a:AttributeValue xmlns:xsi="http://www.w3.org/
>>>> 2001/XMLSchema-instance">
>>>>         <PurposeOfUse xmlns=" .... " xsi:type=" ... " attr1=" ... "
>>>> attr2=" ... "/>
>>>> </saml-a:AttributeValue>
>>>> </saml-a:Attribute>
>>>>
>>>> (the xsi:type is not an standard schema type)
>>>>
>>>> I get this information from an Claim. I parse already, and I have all
>>>> the fields. I need some solution how can I put to the requestClaim ant
>>>> the ClaimParser
>>>> I try to use the OpenSAML, to create a AttributeValue, but I dont know
>>>> how to create the PurposeOfUse element.
>>>>
>>>> Any idee?
>>>> Thanx
>>>>
>>>> Csaba
>>>>
>>>>
>>>>
>>>>
>>
>


Mime
View raw message