AddIdP
The amount of configuration the SP needs to accept assertions from a new IdP depends on how much special treatment that IdP will require compared to your defaults, and various aspects of the overall architecture, such as how discovery is being handled. The basic case is very simple: add the IdP's metadata to a metadata source referenced by a <MetadataProvider> defined in shibboleth2.xml, and you're done.
If you're using a single IdP, then you need to ensure its entityID
is set in the <SSO>
element to route requests to it, but in many cases you're adding "another" IdP, so by definition you have to work through the discovery problem and that's a very deployment-specific topic. Properly-federated services need to deploy a true discovery solution such as the Embedded Discovery Service. Non-federated applications often rely on host or path-driven rules for identifying the IdP, in which case you may be able to address this by adding an entityID
setting to the <RequestMap> or an Apache command as applicable.
If you do need to treat an IdP specially in one of the following ways, read on.
Use a different SP entityID
This isn't a very good idea and should be avoided at all costs, but if you must...
Add a <RelyingParty> element to the <Application> configuration with a new Name
matching the entityID
of the IdP. The SP will name itself by a specified entityID
attribute when it talks to the IdP with that Name
.
This won't work if the legacy WAYF
discovery protocol is used, but it will work with a modern DS
.
Different cryptography requirements
Add a <RelyingParty> element to the <Application> configuration with a new Name
matching the entityID
of the IdP. Use a property like keyName="specialKey"
to refer to a specific <CredentialResolver> containing a non-default key. You can also change the default encryption
and signing
settings, or the use of TLS
to authenticate to other providers, but this is rarely required.
Special Attribute Rules
To apply special attribute filtering rules for a this IdP, add the rules to attribute-policy.xml. No <RelyingParty>
settings are necessary.