IDP proxing for vendors non-DS/Wayf capabilities
Jehan PROCACCIA
jehan.procaccia at tem-tsp.eu
Tue Feb 2 21:19:07 UTC 2021
I manage my federation Metadata myself with those tools : xmlsectool and aggregator-cli
So I published in our schools Federation the entityID of my IDPproxy with only the elements <SPSSODescriptor... (no IDP elements)
and loaded on a test SP (representing the Vendor SP) only the <IDPSSODescriptor of my IDPproxy
so that SP metadata and the IDP metadata of the same entityID (IDPproxy) appears in different files and not cross loaded on Vendor SP and upstream IDPs
Then everything seems clear now regarding metadata
unfortunatly while connecting to Vendor SP , I am redirected to IDPproxy and there it fails with :
opensaml::FatalProfileException
The system encountered an error at Tue Feb 2 21:43:14 2021
opensaml::FatalProfileException at (https://vendorSP.domain.fr/Shibboleth.sso/SAML2/POST)
SAML response reported an IdP error.
Error from identity provider:
Status: urn:oasis:names:tc:SAML:2.0:status:Requester
Sub-Status: urn:oasis:names:tc:SAML:2.0:status:AuthnFailed
Message: An error occurred.
IDPproxy logs shows :
2021-02-02 21:43:14,439 - - INFO [org.opensaml.saml.common.binding.impl.SAMLMetadataLookupHandler:167] - Message Handler: No metadata returned for https://upstreamIDP.domain.fr/idp/shibboleth in role {urn:oasis:names:tc:SAML:2.0:metadata}IDPSSODescriptor with protocol urn:oasis:names:tc:SAML:2.0:protocol
2021-02-02 21:43:14,440 -- DEBUG [net.shibboleth.idp.saml.profile.impl.InitializeRelyingPartyContextFromSAMLPeer:131] - Profile Action InitializeRelyingPartyContextFromSAMLPeer: Attaching RelyingPartyContext based on SAML peer https://upstreamIDP.domain.fr/idp/shibboleth
2021-02-02 21:43:14,440 - - DEBUG [net.shibboleth.idp.relyingparty.impl.DefaultRelyingPartyConfigurationResolver:249] - Resolving relying party configuration
2021-02-02 21:43:14,441 - - DEBUG [net.shibboleth.idp.relyingparty.impl.DefaultRelyingPartyConfigurationResolver:255] - Profile request is unverified, returning configuration shibboleth.UnverifiedRelyingParty
2021-02-02 21:43:14,441 - - DEBUG [net.shibboleth.idp.profile.impl.SelectRelyingPartyConfiguration:136] - Profile Action SelectRelyingPartyConfiguration: Found relying party configuration shibboleth.UnverifiedRelyingParty for request
2021-02-02 21:43:14,442 - - WARN [net.shibboleth.idp.profile.impl.SelectProfileConfiguration:118] - Profile Action SelectProfileConfiguration: Profile http://shibboleth.net/ns/profiles/saml2/sso/browser is not available for RP configuration shibboleth.UnverifiedRelyingParty (RPID https://upstreamIDP.domain.fr/idp/shibboleth)
2021-02-02 21:43:14,444 - - INFO [net.shibboleth.idp.authn.impl.SelectAuthenticationFlow:142] - Profile Action SelectAuthenticationFlow: Moving incomplete flow authn/SAML to intermediate set
2021-02-02 21:43:14,444 - - DEBUG [net.shibboleth.idp.authn.impl.SelectAuthenticationFlow:274] - Profile Action SelectAuthenticationFlow: No specific Principals requested
2021-02-02 21:43:14,445 - - DEBUG [net.shibboleth.idp.authn.impl.SelectAuthenticationFlow:312] - Profile Action SelectAuthenticationFlow: No usable active results available, selecting an inactive flow
2021-02-02 21:43:14,445 - - INFO [net.shibboleth.idp.authn.impl.SelectAuthenticationFlow:316] - Profile Action SelectAuthenticationFlow: No potential flows left to choose from, authentication failed
I guess the problem is related to those 2 messages
1) No metadata returned for https://upstreamIDP.domain.fr/idp/shibboleth in role {urn:oasis:names:tc:SAML:2.0:metadata}IDPSSODescriptor with protocol urn:oasis:names:tc:SAML:2.0:protocol
2) Profile Action SelectProfileConfiguration: Profile http://shibboleth.net/ns/profiles/saml2/sso/browser is not available for RP configuration shibboleth.UnverifiedRelyingParty (RPID https://upstreamIDP.domain.fr/idp/shibboleth)
Do you have an idea of what could be wrong here ?
I did followed https://wiki.shibboleth.net/confluence/display/KB/Using+SAML+Proxying+to+another+IdP
specifically adding in conf/authn/saml-authn-config.xml
<bean id="shibboleth.authn.SAML.discoveryFunction" parent="shibboleth.Functions.Constant"
c:target="https://upstreamIDP.domain.fr/idp/shibboleth" />
thanks .
----- Mail original -----
De: "Nate Klingenstein" <ndk at signet.id>
À: "users" <users at shibboleth.net>, "users" <users at shibboleth.net>
Envoyé: Mardi 2 Février 2021 16:15:11
Objet: RE: IDP proxing for vendors non-DS/Wayf capabilities
Jehan,
> I am afraid that having the same 2 EntityID names ; entityID="https://idproxy.domain.fr/idp/shibboleth <https://idproxy.domain.fr/idp/shibboleth>" (one for SP "side" and the other for IDP "side" of the same entityID) in the same aggregated federation medatadas xml file might generate problems => loading just one of the 2 instances (SP or IDP) , or worst, completly crash the federation metadata load from schools SPs en IDPs
Right, but this also goes for the combination of the two. It all depends on the software in use, the ways in which it is or isn't buggy, and whether it can handle the concept of an entity that serves both roles.
Assuming deployers in the federation aren't using MDQ ubiquitously, remember that when your federation is published to the federation, one entity with both IdP and SP capabilities would be included. Some federation management software can't even handle doing such a thing itself(which means it doesn't work even in the MDQ scenario). Some SP's or IdP's who are federation members may find their software to break abruptly if it parses metadata that contains both an IDPSSODescriptor and an SPSSODescriptor poorly, and many federations have no clue about what software is being deployed within them, so making a significant change like permitting entities that are both SP's and IdP's is a significant step for a federation to consider, just like you're thinking through now.
You definitely don't want to give two differing versions of the metadata for the same entityID provided to any provider or federation. You would instead be presenting 1 set of metadata to the federation/IdP's and 1 set of metadata to the SP, which both happened to use the same entityID. You would not be publishing both versions in the federation metadata. The federation never needs to know, technically, that you're a proxy. You just look like another service. The rest is policy.
You could likely wire up the IdP to use different entityID's for the different facades if you really wanted to, but that's a lot of work for no real benefit other than moving the confusion from one spot to another, and a lot of this code is going to change in 4.1 anyway.
So, to put it more accurately, using this approach, you have 1 entityID and 2 metadata documents describing them, but you also don't have a conflict. You have different metadata documents describing providers that you can interact with that happen to share a single entityID. One of those metadata documents is for when that entityID is playing IdP, and one for when it's playing SP. You give an appropriate IdP metadata document to the SP's that you're dealing with, and you give the appropriate SP metadata document to the IdP's that you're dealing with(e.g. the federation). No different than any other metadata exchange except that the entityID is the same, but it's the same in such a way that it will not conflict, because there is no entity to which it acts as both an IdP and an SP until your use cases get *really* out there.
Hope this clarifies things,
Nate.
--------
Signet, Inc.
The Art of Access ®
https://www.signet.id
-----Original message-----
From: Jehan PROCACCIA
Sent: Tuesday, February 2 2021, 7:27 am
To: users
Subject: Re: IDP proxing for vendors non-DS/Wayf capabilities
>> 1) "Original IdP EntityID: https://idp.example.ac.uk/entity <https://idp.example.ac.uk/entity> <https://idp.example.ac.uk/entity <https://idp.example.ac.uk/entity>>" as beeing the IDP-proxy that will act as a SP to schools IDPs, so add to its metadata the <SPSSODescriptor .. elements ?
> Yes. Your federation may have problems handling this or it may not. But remember that your proxy is only being seen as an SP by the federation and schools' IdP's, and it's only being seen as an IdP by the end SP, so in the proxying case, two different metadata files with the same entityID may be the least confusing option most likely to successfully load in commercial or homegrown implementations.
As I understand I should create a dedicated SP metadata for my IPD-proxy in regard to other school's IDP
<EntityDescriptor ... <SPSSODescriptor ...AssertionConsumerService.. />
but still have a IDP metadata ( <IDPSSODescriptor ...) for that same IDP-proxy to be presented to the Vendor SP (DocuSign)
as I am testing inside our local federation, I am afraid that having the same 2 EntityID names ; entityID="https://idproxy.domain.fr/idp/shibboleth <https://idproxy.domain.fr/idp/shibboleth>" (one for SP "side" and the other for IDP "side" of the same entityID) in the same aggregated federation medatadas xml file might generate problems => loading just one of the 2 instances (SP or IDP) , or worst, completly crash the federation metadata load from schools SPs en IDPs .
Correct me if necessary.
Thanks .
-----Original message-----
From: Jehan PROCACCIA
Sent: Monday, February 1 2021, 3:26 pm
To: users
Subject: Re: IDP proxing for vendors non-DS/Wayf capabilities
thanks Nate,
I understand the limitation of such a configuration. SLO doesn't matter, we don't use it anyway in other context .
and appearing to the SP as a single Entity , is actually what we want to. It's just our group of schools which happens to have their own sovereignty by administering their own IDPs that put us in such a situation regarding that SP that doesn't provide DS/WAYF . So appear to it as the signle IDP-proxy would be actually a feature as we would not have to modify each school's IDP to match that SP specificities (no-encrypt, persistent nameID, specific attributes ...)
Back to my previous mail, can you tell me if I well interpreted the doc by associating
1) "Original IdP EntityID: https://idp.example.ac.uk/entity <https://idp.example.ac.uk/entity> <https://idp.example.ac.uk/entity <https://idp.example.ac.uk/entity>>" as beeing the IDP-proxy that will act as a SP to schools IDPs, so add to its metadata the <SPSSODescriptor .. elements ?
2) "Upstream IdP EntityID: https://upstream.idp/entity <https://upstream.idp/entity> <https://upstream.idp/entity <https://upstream.idp/entity>>" beeing the actual school IDP where nothing is changed, all configuration regarding : SAML flow, attribute-filter, subject canonicalisation beeing done in 1)
1) and 2) are in our same federation, so they share all IDP+SP metadata (+ the IDP-proxy ones)
=> present the vendor SP only One IDP that has access to each schools end users referentials (ldap)
https://wiki.shibboleth.net/confluence/display/IDP30/LDAPAuthnConfiguration#LDAPAuthnConfiguration-MultipleDirectories <https://wiki.shibboleth.net/confluence/display/IDP30/LDAPAuthnConfiguration#LDAPAuthnConfiguration-MultipleDirectories> <https://wiki.shibboleth.net/confluence/display/IDP30/LDAPAuthnConfiguration#LDAPAuthnConfiguration-MultipleDirectories <https://wiki.shibboleth.net/confluence/display/IDP30/LDAPAuthnConfiguration#LDAPAuthnConfiguration-MultipleDirectories>>
Thanks
----- Mail original -----
De: "Nate Klingenstein" <ndk at signet.id <mailto:ndk at signet.id> <mailto:ndk at signet.id <mailto:ndk at signet.id>>>
À: "users" <users at shibboleth.net <mailto:users at shibboleth.net> <mailto:users at shibboleth.net <mailto:users at shibboleth.net>>>
Envoyé: Lundi 1 Février 2021 22:53:18
Objet: RE: IDP proxing for vendors non-DS/Wayf capabilities
> In other cases, it can be a massive problem, as everything appears to the proxy as just a standard authentication request from one monolithic entityID with no cues beyond that.
And, similarly, the end SP only sees assertions as coming from a single IdP, In all cases, attributes are your lifeline, they're not going to be able to check scopes but you are, and logout is going to be an even bigger hairball than it usually is, as the proxying IdP only counts itself as a recipient of an assertion and AFAIK does not propagate logout requests received from the end SP back to the proxied IdP.
--------
Signet, Inc.
The Art of Access ®
https://www.signet.id <https://www.signet.id> <https://www.signet.id <https://www.signet.id>>
--
For Consortium Member technical support, see https://wiki.shibboleth.net/confluence/x/coFAAg <https://wiki.shibboleth.net/confluence/x/coFAAg> <https://wiki.shibboleth.net/confluence/x/coFAAg <https://wiki.shibboleth.net/confluence/x/coFAAg>>
To unsubscribe from this list send an email to users-unsubscribe at shibboleth.net <mailto:users-unsubscribe at shibboleth.net> <mailto:users-unsubscribe at shibboleth.net <mailto:users-unsubscribe at shibboleth.net>>
--
For Consortium Member technical support, see https://wiki.shibboleth.net/confluence/x/coFAAg <https://wiki.shibboleth.net/confluence/x/coFAAg> <https://wiki.shibboleth.net/confluence/x/coFAAg <https://wiki.shibboleth.net/confluence/x/coFAAg>>
To unsubscribe from this list send an email to users-unsubscribe at shibboleth.net <mailto:users-unsubscribe at shibboleth.net> <mailto:users-unsubscribe at shibboleth.net <mailto:users-unsubscribe at shibboleth.net>>
--
For Consortium Member technical support, see https://wiki.shibboleth.net/confluence/x/coFAAg <https://wiki.shibboleth.net/confluence/x/coFAAg>
To unsubscribe from this list send an email to users-unsubscribe at shibboleth.net <mailto:users-unsubscribe at shibboleth.net>
----- Mail original -----
De: "Nate Klingenstein" <ndk at signet.id <mailto:ndk at signet.id>>
À: "users" <users at shibboleth.net <mailto:users at shibboleth.net>>
Envoyé: Lundi 1 Février 2021 23:42:30
Objet: RE: IDP proxing for vendors non-DS/Wayf capabilities
--
For Consortium Member technical support, see https://wiki.shibboleth.net/confluence/x/coFAAg <https://wiki.shibboleth.net/confluence/x/coFAAg>
To unsubscribe from this list send an email to users-unsubscribe at shibboleth.net <mailto:users-unsubscribe at shibboleth.net>
--
For Consortium Member technical support, see https://wiki.shibboleth.net/confluence/x/coFAAg
To unsubscribe from this list send an email to users-unsubscribe at shibboleth.net
More information about the users
mailing list