Yep, I just hit it on 6.0.4
D.
On Friday, 26 July 2019 10:25:33 UTC-4, Josh G wrote:
>
> Attribute Mappings to SAML Identifiers (e.g. urn:oid:2.5.4.42) is broken
> in CAS 6.0.
>
> In CAS 5.2 (and earlier releases of CAS 5.x) it was possible to map an
> attribute to a SAML compatible URI by leveraging the attributeReleasePolicy
> within a service definition.
>
> *A working (CAS 5.2) example is outlined below:*
>
> Here is an snippet of an HJSON entry for a SAML service:
>
> attributeReleasePolicy : {
> @class : org.apereo.cas.services.ReturnMappedAttributeReleasePolicy
> allowedAttributes : {
> @class : java.util.TreeMap
> sn : "urn:oid:2.5.4.4"
> givenName : "urn:oid:2.5.4.42"
> displayName : "urn:oid:2.16.840.1.113730.3.1.241"
> eduPersonPrincipalName : "urn:oid:1.3.6.1.4.1.5923.1.1.1.6"
> sAMAccountName : "urn:oid:1.2.840.113556.1.4.221"
> }
> }
>
> Here is a snippet of a single attribute from a working response (CAS 5.2):
>
> <saml2:Attribute FriendlyName="urn:oid:0.9.2342.19200300.100.1.3"
> Name="urn:oid:0.9.2342.19200300.100.1.3"
> NameFormat=
> "urn:oasis:names:tc:SAML:2.0:attrname-format:uri"
> >
> <saml2:AttributeValue>EMAIL_ADDRESS_HERE</saml2:AttributeValue>
> </saml2:Attribute>
>
> *The FriendlyName / Name values are mapped to the same value in CAS 5.2
> and below, but this was a limitation of CAS at the time which appears to be
> addressed in CAS 6.0.*
>
>
> *The above functionality is not working as expected, nor do any of my
> workarounds seem to work either.*
>
> If the exact attributeReleasePolicy is run in CAS 6.0, it appears to
> mangle the Principal ID of the response; CAS returns the following:
>
> Error: No principal was found in the response from the CAS server.
>
> The dump provided on the CAS login page is available here:
> https://pastebin.com/raw/Ur3Ce5UN
>
> However, if we look through the server logs a bit more the following error
> message appears:
>
> 2019-07-25 17:34:19,491 ERROR [org.jasig.cas.client.util.XmlUtils] - <Element
> or attribute do not match QName production: QName::=(NCName':')?NCName.>
> org.xml.sax.SAXParseException: Element or attribute do not match QName
> production: QName::=(NCName':')?NCName.
>
> It appears that CAS is attempting to validate the attribute mappings in the
> attributeReleasePolicy and is failing on the colon (:).
>
> If I remove the colon and periods from the above attributeReleasePolicy (for
> testing purposes only), the login goes through as expected and the SAML
> response looks as expected (sans the missing colons and periods):
>
> <saml2:Attribute FriendlyName="urnoid25442"
> Name="urnoid25442"
>
> NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri"
> >
> <saml2:AttributeValue>FIRST_NAME_HERE</saml2:AttributeValue>
> </saml2:Attribute>
>
>
> I've tried a variety of workarounds for this, but none has been successful
> (same error messages, same behaviors).
>
> The latest attempt involves feeding the released attributes to their
> respective urn:oid values, explicitly stating the urn:oid values are uri
> formatted attributes, and mapping the urn:oid values to their friendly name
> counterparts.
>
> This results in the same error above:
>
> attributeReleasePolicy : {
> @class : org.apereo.cas.services.ReturnMappedAttributeReleasePolicy
> allowedAttributes : {
> @class : java.util.TreeMap
> "urn:oid:2.5.4.4" : "groovy { return attributes['sn'].get(0) }"
> "urn:oid:2.5.4.42" : "groovy { return
> attributes['givenName'].get(0) }"
> "urn:oid:2.16.840.1.113730.3.1.241" : "groovy { return
> attributes['displayName'].get(0) }"
> }
> }
>
> attributeNameFormats : {
> @class : java.util.HashMap
> "urn:oid:2.5.4.4" : uri
> "urn:oid:2.5.4.42" : uri
> "urn:oid:2.16.840.1.113730.3.1.241" : uri
> }
>
> attributeFriendlyNames : {
> @class : java.util.HashMap
> "urn:oid:2.5.4.4" : sn
> "urn:oid:2.5.4.42" : givenName
> "urn:oid:2.16.840.1.113730.3.1.241" : displayName
> }
>
>
> This seems to be a pretty significant bug, unless I am (hopefully!) missing
> something obvious.
>
>
--
- Website: https://apereo.github.io/cas
- Gitter Chatroom: https://gitter.im/apereo/cas
- List Guidelines: https://goo.gl/1VRrw7
- Contributions: https://goo.gl/mh7qDG
---
You received this message because you are subscribed to the Google Groups "CAS
Community" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/a/apereo.org/d/msgid/cas-user/47cbe440-8fae-4574-ad50-8dd4fe21cbb1%40apereo.org.