Persistent NameID format with an attribute as NameID value
IAM David Bantz
dabantz at alaska.edu
Wed Aug 13 19:16:44 UTC 2025
We did this for National Clearing House a while back which produces what
you're asking for;
if redone today I'd use samlSubjectID as the basis rather than
eduPersonUniqueID
and if we had control over the SP metadata, we'd do it with metadata-driven
attribute release, but this SP is in InCommon.
They were adamant in requiring this particular format and value in the
subject.
attribute-resolver:
<AttributeDefinition id="nameid-persistent-eduPersonUniqueID" xsi:type=
"Simple" >
<InputAttributeDefinition ref="eduPersonUniqueID" />
<AttributeEncoder xsi:type="SAML2String" name="nameid" friendlyName=
"nameid"/>
</AttributeDefinition>
relying party override:
<!-- National Student Clearing House wants "persistent" nameID -->
<bean parent="RelyingPartyByName" c:relyingPartyIds="#{{'https://id.
studentclearinghouse.org/saml2/service-provider/myhub'}}">
<property name="profileConfigurations">
<list>
<bean parent="SAML2.SSO"
p:nameIDFormatPrecedence=
"urn:oasis:names:tc:SAML:2.0:nameid-format:persistent" >
</bean>
</list>
</property>
</bean>
attribute-filter rule:
<!-- ePUID released to appear as persistent NameID -->
<AttributeRule attributeID="nameid-persistent-eduPersonUniqueID">
<PermitValueRule xsi:type="ANY" />
</AttributeRule>
<AttributeRule attributeID="eduPersonUniqueID">
<PermitValueRule xsi:type="ANY" />
</AttributeRule>
and here's a snippet from the SAML response:
<saml2:Subject>
<saml2:NameID
Format="urn:oasis:names:tc:SAML:2.0:nameid-format:persistent"
NameQualifier="urn:mace:incommon:alaska.edu" SPNameQualifier="
https://id.studentclearinghouse.org/saml2/service-provider/myh
ub">30459959 at alaska.edu</saml2:NameID>
David St Pierre Bantz
U Alaska IAM
On Wed, Aug 13, 2025 at 10:57 AM Cantor, Scott via users <
users at shibboleth.net> wrote:
> > How would I get the IdP to use an attribute-sourced Name ID
> > generator that sends an attribute as the Name ID but with a
> > format of persistent?
>
> A persistent NameID is covered by
> https://shibboleth.atlassian.net/wiki/spaces/IDP5/pages/3199507892/PersistentNameIDGenerationConfiguration
>
> (plus the usual issue of telling the IdP to pick that Format of NameID)
>
> The "other" option is the approach used for the pairwise-id Attribute or
> OpenID pairwise sub claim, which is usually done with the ComputedId
> connector and then taking the value and doing the usual things with the
> result to produce an AttributDefinition on top of that, usually via Scoped
> to add the domain suffix.
>
> Neither one of those produces an Attribute with a NameID as a value, and
> we do not intend anybody do that anymore. That's dead code and is
> undocumented.
>
> I do not believe for one second that much out there actually requires
> that, and I most definitely would never trust somebody's word that they did
> without seeing the code or testing myself.
>
> And even then I would never do it.
>
> -- Scott
>
>
> --
> For Consortium Member technical support, see
> https://shibboleth.atlassian.net/wiki/x/ZYEpPw
> To unsubscribe from this list send an email to
> users-unsubscribe at shibboleth.net
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://shibboleth.net/pipermail/users/attachments/20250813/9e2a52ab/attachment.htm>
More information about the users
mailing list