forcing one protected area to only accept a specific IDP with other areas use many IDPs

Jeffrey Eaton jeaton at cmu.edu
Thu Feb 16 21:23:11 GMT 2012


We have a server with content protected by Shibboleth.  One section of content should accept assertions from any IDP in InCommon (call this /incommon/).  The other section of content must only ever accept assertions from our own IDP (call this /local/).  

I have it working so that if a user visits /incommon/ with no session, they go to the DS, and can authenticate as I expect.  If the user vists /local/ with no session, they are redirected to our local IDP, and authenticate as I expect.  It even does the right thing if I have a session in one area, and attempt to access the other area.

However, I discovered that I can hit 

https://servername/Shibboleth.sso/Login?SAMLDS=1&entityID=urn:mace:incommon:idp.protectnetwork.org

which will happily redirect me to log in at ProtectNetwork and let me access my "local-only" content using that assertion.  Clearly this is undesirable.

I had set it up by setting the default Session handler in shibboleth2.xml to:

           <SSO entityID="https://login.cmu.edu/idp/shibboleth" id="default">SAML2</SSO>

and then added an ApplicationOverride like:

           <ApplicationOverride id="incommon">
              <Sessions lifetime="28800" timeout="3600" checkAddress="false" relayState="ss:mem" handlerSSL="true" handlerURL="/incommon/Shibboleth.sso">
                <SSO discoveryProtocol="SAMLDS" discoveryURL="https://servername/DS">SAML2 SAML1</SSO>
              </Sessions>
           </ApplicationOverride>

Then for the content which should have InCommon access, I set

 ShibRequestSetting applicationId incommon

which makes it use the DS. 

How can I prevent someone from getting in to my local-only content via an IDP other than my local one?  Am I missing something obvious?

-jeaton



More information about the users mailing list