FW: 2 Shibboleth SP’s with 2 different entity IDs but same AssertionConsumerService(ACS) URL
Muthukumar Manohar, Emily (ELS-CON)
e.muthukumarmanohar at elsevier.com
Wed Mar 5 10:34:02 UTC 2025
Hi Team,
A very good day to you.
We have a business requirement where we need to have 2 Shibboleth SP’s with 2 different entity IDs but same AssertionConsumerService(ACS) URL and both SPs will be running on the same server.
As the shibboleth documentation says the “The location of the ACS is a relative path that will be combined with the base handlerURL”. Hence I have the same handler URL for both old SP and new SP.
I have the following configuration in my shibboleth2.xml
<SPConfig xmlns="urn:mace:shibboleth:3.0:native:sp:config" xmlns:conf="urn:mace:shibboleth:3.0:native:sp:config" xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata" xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" clockSkew="600" logger="syslog.logger">
<RequestMapper type="Native">
<RequestMap applicationId="default">
<Host applicationId="default" name="sample-oldshibauth-np.test.com" requireSession="true" scheme="http">
<Path authType="shibboleth" exportAssertion="true" name="hbeat" requireSession="false"/>
<Path authType="shibboleth" exportAssertion="true" name="ShibAuth" requireSession="false"/>
</Host>
<Host applicationId="default" name=" sample-oldshibauth-np.test.com " requireSession="true" scheme="https">
<Path authType="shibboleth" exportAssertion="true" name="hbeat" requireSession="false"/>
<Path authType="shibboleth" exportAssertion="true" name="ShibAuth" requireSession="false"/>
</Host>
<Host applicationId="new_shib" name=" sample-newshibauth-np.test.com " requireSession="true" scheme="http">
<Path authType="shibboleth" exportAssertion="true" name="hbeat" requireSession="false"/>
<Path authType="shibboleth" exportAssertion="true" name="ShibAuth" requireSession="false"/>
</Host>
<Host applicationId="new_shib" name=" sample-newshibauth-np.test.com " requireSession="true" scheme="https">
<Path authType="shibboleth" exportAssertion="true" name="hbeat" requireSession="false"/>
<Path authType="shibboleth" exportAssertion="true" name="ShibAuth" requireSession="false"/>
</Host>
</RequestMap>
</RequestMapper>
<ApplicationDefaults attributePrefix="ELS_" connectTimeout="11" encryption="false" entityID="https://auth.oldshib.com/" homeURL="https://sample-oldshibauth-np.test.com/ShibAuth/deliverCred" id="default" policyId="default" timeout="20">
<Sessions checkAddress="false" exportLocation="/GetAssertion" handlerSSL="false" handlerURL="https://sample-oldshibauth-np.test.com/SHIRE" lifetime="28800" redirectLimit="host" relayState="cookie" timeout="3600">
<SSO discoveryProtocol="SAMLDS">
SAML2 SAML1
</SSO>
<SessionInitiator Location="/Login1" acsIndex="100" id="Login1" isDefault="true" outgoingBinding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" type="Chaining">
<SessionInitiator template="bindingTemplate.html" type="SAML2"/>
</SessionInitiator>
<SessionInitiator Location="/Login100" isDefault="true" outgoingBinding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" type="SAML2"/>
<md:AssertionConsumerService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="/SAML2/POST" index="1"/>
<LogoutInitiator Location="/Logout" type="Chaining">
<LogoutInitiator template="bindingTemplate.html" type="SAML2"/>
<LogoutInitiator type="Local"/>
</LogoutInitiator>
<md:SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:SOAP" Location="/SLO/SOAP"/>
<Handler Location="/Metadata" signing="false" type="MetadataGenerator"/>
</Sessions>
<ApplicationOverride attributePrefix="ELS_" connectTimeout="11" encryption="false" entityID=" https://auth.newshib.com/" homeURL=" https://sample-oldshibauth-np.test.com/ShibAuth/deliverCred" policyId="default" timeout="20" id="new_shib">
<Sessions checkAddress="false handlerURL=" https://sample-oldshibauth-np.test.com/SHIRE " handlerSSL="true" lifetime="58800" redirectLimit="host" relayState="cookie" timeout="3600">
<SSO discoveryProtocol="SAMLDS">
SAML2 SAML1
</SSO>
<SessionInitiator Location="/Login1" entityID="https://idp-2.infra.test.com/idp/shibboleth" acsIndex="100" id="Login1" isDefault="true" outgoingBinding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" type="Chaining">
<SessionInitiator template="bindingTemplate.html" type="SAML2"/>
</SessionInitiator>
<SessionInitiator Location="/Login100" isDefault="true" outgoingBinding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" type="SAML2"/>
<md:AssertionConsumerService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="/SAML2/POST" index="1"/>
<LogoutInitiator Location="/Logout" type="Chaining">
<LogoutInitiator template="bindingTemplate.html" type="SAML2"/>
<LogoutInitiator type="Local"/>
</LogoutInitiator>
<md:SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:SOAP" Location="/SLO/SOAP"/>
</Sessions>
</ApplicationOverride>
</ApplicationDefaults>
</SPConfig>
Is the above configuration correct? Can I have same handler URL for both SPs? Or is there any other ideal way to achieve my business requirement of having 2 SPs with different entity ID but same ACS URL? With the above config in shibboleth2.xml, when I try to authenticate via old SP, my idp is rejecting the request with status 403.
Thanks,
Emily Sherline M
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://shibboleth.net/pipermail/users/attachments/20250305/2ac03840/attachment.htm>
More information about the users
mailing list