Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Why doesn't the package support multiple NameFormat attributes for the <saml:Attribute> element? #286

Open
khan-zia opened this issue Sep 12, 2021 · 3 comments

Comments

@khan-zia
Copy link

Description of the problem

I came across this situation today where I need to be able allow users to add multiple Attribute Statements to their custom SAML integration with our IDP. For each additional attribute statement, I need to allow the user to be able to set the following:

  • Name (that will be the Name attribute)
  • NameFormat (That will be the NameFormat attribute)
  • Value (That will be the value that goes in to the <saml:AttributeValue> element)

When I took a look at how I could construct the SAMLResponse message for the user's custom SAML integration, I could see no (at least apparent) way to be able to set the NameFormat INDIVIDUALLY on each user defined Attribute Statement.
I see a setter method on the SAML2\Assertion class that looks like this

$this->assertion->setAttributeNameFormat('');

But that method clearly says that it will set the NameFormat for ALL attribute statements. (Those that are all set via an associative array at once). This is not the desired functionality. I dug out the following code block from the SAML2\Assertion class which confirms it. Take a look at this screenshot.

Screenshot 2021-09-12 at 10 46 05 PM

It clearly sets the same NameFormat inside the foreach loop for all statements.

Desired result (solution)

Take a look at the following XML that was generated via a tool which shows the output that I also want.

    <saml2:AttributeStatement>
        <saml2:Attribute Name="first" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified">
            <saml2:AttributeValue
                xmlns:xs="http://www.w3.org/2001/XMLSchema"
                xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xs:string">value1
            </saml2:AttributeValue>
        </saml2:Attribute>
        <saml2:Attribute Name="second" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri">
            <saml2:AttributeValue
                xmlns:xs="http://www.w3.org/2001/XMLSchema"
                xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xs:string">value2
            </saml2:AttributeValue>
        </saml2:Attribute>
        <saml2:Attribute Name="third" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic">
            <saml2:AttributeValue
                xmlns:xs="http://www.w3.org/2001/XMLSchema"
                xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xs:string">value3
            </saml2:AttributeValue>
        </saml2:Attribute>
    </saml2:AttributeStatement>

As you can see, the NameFormats for all 3 statements are different. How could I achieve this desired XML output (SAMLResponse message) ? Any help will be greatly appreciated.

@tvdijen
Copy link
Member

tvdijen commented Sep 12, 2021

Hi @khan-zia ! We are aware of this issue and have fixed this in the master-branch.. It's not ready for release yet though..

@khan-zia
Copy link
Author

Thanks @tvdijen for the quick response. Will it be included in the next version? when can we expect the release?

@tvdijen
Copy link
Member

tvdijen commented Sep 13, 2021

Yes, it wil be included.. We don't have a date yet.. Probably early next year

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants