Shibboleth IdP 4, SAML proxying and SimpleSAMLphp proxy breakage?
Robert Bradley
robert.bradley at it.ox.ac.uk
Tue Feb 23 15:50:25 UTC 2021
While this is technically not a Shibboleth bug, the following issue may
be causing problems for other people, so I'm raising it here for reference.
Recently, I have come across a SimpleSAMLphp SP
(https://monitor.eduroam.org/sp/module.php/saml/sp/metadata.php/default-sp)
that is used by GÉANT to SAML-proxy requests to various sites, including
the eduroam CAT administration pages. If the Shibboleth IdP performs
authentication via a non-proxying route, the IdP sends a SAML aeesertion
with itself as issuer. The assertion contains an <AuthnContext> with no
<AuthenticatingAuthority> elements, and the proxy IdP generates a
basic-format attribute "eptid" of the form
"eduPersonTargetedID:${eduPersonTargetedID}!${IdPEntityID}" and a SAML
<AuthnContext> element with a single <AuthenticatingAuthority> entry for
"${IdPEntityID}". The eduPersonTargetedID attribute in this case is an
XML attribute:
<saml2:NameID
Format="urn:oasis:names:tc:SAML:2.0:nameid-format:persistent"
NameQualifier="${IdPEntityID}"
SPNameQualifier="${SPEntityID}">
${eduPersonTargetedID}
</saml2:NameID>
${IdPEntityID}: Shibboleth IdP
${AzureIdPEntityID}: Azure AD IdP
${SPEntityID}: The remote proxy IdP/SP
${eduPersonTargetedID}: The computed persistent ID value (base64 format)
While we can argue about the use of the non-standard attribute within
the GÉANT stack as opposed to the real eduPersonTargetedID value, this
is all compliant SAML as far as I can tell.
If you now use the SAML authentication flow to authenticate to the
Shiboleth IdP, things now change. The IdP sends a SAML <AuthnContext>
with two <AuthenticatingAuthority> elements: ${AzureIdPEntityID}, and
${IdPEntityID}. The Issuer and eduPersonTargetedID remain unchanged,
and the resulting SAML is entirely compliant as you would expect.
However, the proxy IdP in this case appears to ignore the issuer
entirely and uses the first <AuthenticatingAuthority> element to
generate the "eptid" attribute, i.e.
"eduPersonTargetedID:${eduPersonTargetedID}!${AzureIdPEntityID}". This
looks like broken behaviour to me.
I'm not sure if this is a bug in upstream SimpleSAMLphp or simply an
issue with the GÉANT SAML proxy, but I thought it would be worth noting
here in case anyone else running Shibboleth IdPs with Azure AD for
authentication runs into similar issues.
--
Dr Robert Bradley
Identity and Access Management Team, IT Services, University of Oxford
-------------- next part --------------
A non-text attachment was scrubbed...
Name: OpenPGP_signature
Type: application/pgp-signature
Size: 840 bytes
Desc: OpenPGP digital signature
URL: <http://shibboleth.net/pipermail/users/attachments/20210223/ce5f5671/attachment.sig>
More information about the users
mailing list